MS SQL還原問題排除 (記憶體不足、限制的使用者)

tags: 資料庫

萬用解

要匯入外部來的資料庫,有時候用bak還原不回來,我就會想用指令碼的方式來處理,就算沒有匯入,至少可以逐行拿insert來看結果

資料庫使用中無法還原

從新增查詢(N) (在上方工具列可以看到),
要選擇master資料庫,刪除其他正在使用資料庫的連線,先輸入按 !執行(X)

    sp_who

看看哪個執行緒把正在使用的dbname資料庫佔走,用kill指令對應spid砍掉
如果要看結果,把sp_who擺在後面可以馬上看到刪除結果

    kill 51;
    sp_who

記憶體不足

但資料庫重建時,以前測試期都小小的沒差,後來檔案越來越大,指令碼也越長,總算在大到30萬筆的時候,出現記憶體不足的錯誤訊息

勉勉強強的找了臨時替代方案,在命令提示字元中,使用sqlcmd可以解決這問題

sqlcmd -S PcName\SQLEXPRESS -U sa -P password -d DataBaseName -i C:\Script.sql -oC:\log.txt

-S: 此處為在 SSMS 裡寫在「伺服器名稱」的值
-U: 此處為在 SSMS 裡寫在「登入」的值
-P: 此處為在 SSMS 裡寫在「密碼」的值
-i: 匯入的腳本檔,也就是剛才使用資料庫發行精靈 (SqlPubWiz.exe) 產生出來的檔案
-o: 匯出的檔案,內容大致是平常在 SSMS 裡執行 SQL 語法時會出現在「訊息」窗格裡的內容(我是覺得這批匯入所產生的 log,和我在 SSMS 執行時看到的訊息量不太一樣)

如果是用bak正常還原,出現限制的使用者,可以在屬性>選項>狀態的限制存取裡
「Multiple」、「Single」與「Restricted」改成Multiple就可以了

參考資料

http://fannys23.pixnet.net/blog/post/29336021 [MSSQL] 使用命令列模式執行大量 SQL 語法
http://blog.xuite.net/tolarku/blog/36344366 MSSQL 資料庫 - 限制的使用者

作業系統 5 權限不足 SQL Server 錯誤 5120

Windows VISTA / 7 / Server 2008這些作業系統,好像在某些特殊目錄底下,都設了奇怪的權限
不像以前的 Windows XP / Server 2003那樣,管理員想進入哪個目錄都如入無人之境
只好乖乖的把以前的資料庫檔案 .mdf與 . ldf兩個檔案
放到 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

如果您 OS是 x64的版本,而SQL Server是32 bit版, 則是放到 C:\Program Files(x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data

參考資料

http://www.dotblogs.com.tw/mis2000lab/archive/2010/02/10/13565.aspx