Showing posts with label Database. Show all posts
Showing posts with label Database. Show all posts

10/27/2016

幾個與 MSSQL Server Backup 有關的 Link


How to check progress of DBCC SHRINKFILE?


當我們在 SQL Server Management Studio 做 Database Shrink 時, 往往看不到 Progress.

原文請參考: 這裡!

下面這個指令, 可以讓我們看到 Progress.

select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id) , R.cpu_time, R.total_elapsed_time, R.percent_complete from sys.dm_exec_requests R cross apply sys.dm_exec_sql_text(R.sql_handle) T

10/25/2016

MSSQL 2005 Check Backup/Restore Progress


因為工作上需要, 有時候要 Restore SQL 2005 in command line mode.

底下的 Script 可以檢查大概的 progress.

相關資料請參考 這裡 .

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete) AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time], CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min], CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min], CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours], CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2, CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END) FROM sys.dm_exec_sql_text(sql_handle))) FROM sys.dm_exec_requests r WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE')

11/16/2015

Talend - MSSQL Connection for Multiple Instances

狀況: Install 不同 Version 的 MSSQL 在同一台機器上, 當我們要使用 Talend MSSQL Connection 時, 該如何設定?

MSSQL Express 2017 problem - MSSQL configure does not set the default TCP port to 1433. We need to change the setting.

5/06/2015

How to write a text field in MS SQL server to file

最近做ㄧ些 EDI 的東西,由 SQL Server 直接產生 X12 的檔案, 存在 SQL Server 裏. 因為這些檔案必須寫出來變成 Text File, 所以在網路上找方法.

參考網址: https://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

這個網址上的 Function 可以 Work, 但是有些 SP 在 SQL 中, Default 是被 Disable 掉的, 所以請參考其他兩篇 Post, 去 Enable ㄧ些 System 的 SP.

http://blog.barksoftware.com/2015/05/the-execute-permission-was-denied-on.html

http://blog.barksoftware.com/2015/05/sql-server-enable-xpcmdshell-using.html

另外, 這個 Function 有一個嚴重的問題, 當使用 cursor 去呼叫這個 Function 寫出檔案, 超過 255 個檔案時, 就會 Error 了.  不過現在沒時間去找問題, 將就用吧.

Update: 5/14/2015
這個東西不能將就使用, 我在 SQL 2005 上, 寫出去 Unicode 的 Text File 有問題. 他就好像早期 VB 裡面使用 Unicode 那樣, 寫出去的 File 都是 ASCII + 00.  這個東西還是放棄吧.

SQL SERVER – Enable xp_cmdshell using sp_configure

MS SQL Server 因為安全考量, Default Disable 掉了 xp_cmdshell stored procedure.

參考網址: http://blog.sqlauthority.com/2007/04/26/sql-server-enable-xp_cmdshell-using-sp_configure/

底下是 Enable 的方法

---- To allow advanced options to be changed.
EXEC sp_configure ‘show advanced options’, 1
GO
—- To update the currently configured value for advanced options.
RECONFIGURE
GO
—- To enable the feature.
EXEC sp_configure ‘xp_cmdshell’, 1
GO
—- To update the currently configured value for this feature.
RECONFIGURE
GO


The EXECUTE permission was denied on the object 'sp_OACreate', database 'mssqlsystemresource', schema 'sys'.

有些與 File 操作有關的 SP 因為安全考量, Default 被 Disable 掉, 底下是 Solution.

參考網址: http://hardimodi.blogspot.com/2013/03/the-execute-permission-was-denied-on.htm

use [master]
GO
GRANT EXECUTE ON [sys].[sp_OASetProperty] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAMethod] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAGetErrorInfo] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OADestroy] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAStop] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OACreate] TO [public]
GO
use [master]
GO
GRANT EXECUTE ON [sys].[sp_OAGetProperty] TO [public]
GO
sp_configure 'show advanced options', 1
GO
reconfigure
go

exec sp_configure
go
exec sp_configure 'Ole Automation Procedures', 1
-- Configuration option 'Ole Automation Procedures' changed from 0 to 1. Run the RECONFIGURE statement to install.
go
reconfigure
go

2/26/2013

SQL Server Backup File 太大, 無法 Copy 回來 Restore.

這次碰到的狀況是 SQL Server 的 Backup File 太大, 想要 Copy 到 Local 來做 Restore 不可行. 使用 UNC 透過網路來 Restore 也失敗, 所以想到一個方法, 因為 SQL Server 的 backup file 壓縮率都很高, 好幾百 MB 壓到最後可能只有 20MB. 所以先把 backup file 壓縮起來 Copy 到 local, 然後用 WinMount 這個軟體把 Compressed 檔案 Mount 進來當作一個 Hard Drive, 然後再讓 MS SQL 去做 Restore. 這樣就可以解決 Backup File 太大無法 Copy 回來 Restore 的問題.

4/11/2012

Get Database Table Field Name

有的時候, DB Table 的 fields 太多, 要慢慢打嫌多, 又怕打錯, 所以從 DB 中抓出來是最保險的. 底下指令可以這個動作,

For MSSQL:

SELECT * FROM information_schema.columns WHERE table_name = 'TableName'; 

For MYSQL:

SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]