bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries for the ‘MSSQL’ Category

在 MSSQL 2005 停用或啟用資料表上定義的 DML 觸發程序

從 MSSQL 2005 版本開始,想停用或啟用 Trigger 就簡單多了,語法如下:

停用 Trigger ( 觸發程序 )

語法:

1
2
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

實作:

1
DISABLE TRIGGER dbo.trigName ON dbo.tableName

啟用 Trigger ( 觸發程序 )

語法:

1
2
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

實作:

1
ENABLE TRIGGER dbo.trigName ON dbo.tableName

Comments (1)

在 MSSQL 2000 停用或啟用資料表上定義的 DML 觸發程序

有些應用系統前端只負責資料的異動,而連動的部份就由被異動的資料表上所定義的觸發程序來處理。例如領料單會去扣庫存數的狀況。可是當我們在進行匯入或複製資料之時,就會希望不要執行觸發程序的時候,就需要自行手動管理了。

我們可以用下列 SQL 命令來達成:

1
2
--停用觸發程序
ALTER TABLE tableName DISABLE TRIGGER trigName
1
2
--重新啟用觸發程序
ALTER TABLE tableName ENABLE TRIGGER trigName

Leave a Comment

解決MSSQL6.5設定TempDB in RAM過大導致SQL Server無法啟動問題

因為 MSSQL 6.5 Server 出現 TempDB 空間不足的訊息,所以通知所有用戶離線並進行系統調教增加空間,然後重新啟動服務就出現下列錯誤訊息:

1
2
3
kernel udactivate(IN_RAM): Operating system error 8(Not enough storage is available to process this command.) encountered
spid1 Device activation error. The physical filename 'IN_RAM' may be incorrect
spid1 crdb_tempdb: Unable to move tempdb into RAM; RAM device doesn't exist, cannot be created, or doesn't have enough space for tempdb

慘了,踩到地雷了。因為當資料庫啟動時,如果系統設定 tempdb 是存放在 RAM 上,則 SQL Server 必須建立 temp_db Device 在可用的系統記憶體空間上,若空間不足無法建立裝置就會導致資料庫啟動失敗而得到上面的錯誤訊息。

解決方式:

1. 開啟命令列視窗(cmd.exe),並以最小的配置模式啟動SQL Server使用下列命令:

sqlservr -c -f

這時會看到命令列視窗傾印錯誤紀錄,然後看到最後一行出現:

kernel   Warning: override, autoexec procedures skipped.

(Read the rest of this entry…)

Leave a Comment

MSSQL6.5 upgrade to MSSQL2005

使用 MSSQL2005 的匯入資料功能,連接 MSSQL6.5 用 OLE DB Provider 的資料連接

碰到下列問題

作業已停止…
– 建立 TransferProvider。 (成功)
– 建立破壞性 SQL 的暫存檔。 (成功)
– 建立建設性 SQL 的暫存檔。 (成功)
– 建立資料表中繼資料的 XML 暫存檔案。 (成功)
– 使用檔案和來源/目的地連接資訊來設定 TransferProvider。 (成功)
– 使用 TransferProvider 執行傳送。 (錯誤)
 訊息
 * 錯誤 : errorCode=-1071636471 description=發生 OLE DB 錯誤。錯誤碼: 0x80040E14。
 有 OLE DB 記錄可用。 來源: “Microsoft OLE DB Provider for SQL Server”  Hresult: 0x80040E14  描述: “Line 1: Incorrect syntax near ‘[‘.”。
  helpFile=dtsmsg.rll helpContext=0 idofInterfaceWithError={8BDFE893-E9D8-4D23-9739-DA807BCDC2AC} (Microsoft.SqlServer.DtsTransferProvider)
 
 如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
 
– 執行破壞性 SQL。(卸除資料表) (成功)
– 執行建設性 SQL。(建立資料表) (成功)
– 建立 [FBUSA].[ACIPDF] 的暫存資料表傳送封裝 (已停止)
– 執行 [FBUSA].[ACIPDF] 的傳送封裝 (已停止)
– 正在複製到  (已停止)
因為SQL2005撈資料時會將資料表的SQL語法設為

select [F1],[F2],… from [DBName].[Schema].[TBName]

的格式,而MSSQL6.5不支援此種語法格式,所以發生錯誤。

所以改用 MSSQL2000 的匯出匯入精靈來處理,結果資料的傳輸順利完成。

不過主鍵、索引、預設值、約束條件的設定就要全部手動重建。

Leave a Comment

MS SQL 與 MS Access, MS Excel 之間的資料轉換

作為 MIS 或是程式設計人員, 常常會面臨需要將 MS SQL 與 MS Access, MS Excel 之間的資料進行轉換.
以下有資料可參考:

英文
http://www.itrain.de/knowhow/sql/transfer/adhoc/
簡體
http://www.microsoft.com/china/community/Column/31.mspx

Leave a Comment

  • 工商服務

    廣告讀取中...
  • 近期留言

  • 標籤

  • 彙整