# MS SQL還原問題排除 (記憶體不足、限制的使用者) ###### tags: `資料庫` ## 萬用解 要匯入外部來的資料庫,有時候用bak還原不回來,我就會想用指令碼的方式來處理,就算沒有匯入,至少可以逐行拿insert來看結果 ## 資料庫使用中無法還原 從新增查詢(N) (在上方工具列可以看到), 要選擇master資料庫,刪除其他正在使用資料庫的連線,先輸入按 !執行(X) ```=sql sp_who ``` 看看哪個執行緒把正在使用的dbname資料庫佔走,用kill指令對應spid砍掉 如果要看結果,把sp_who擺在後面可以馬上看到刪除結果 ```=sql kill 51; sp_who ``` ## 記憶體不足 但資料庫重建時,以前測試期都小小的沒差,後來檔案越來越大,指令碼也越長,總算在大到30萬筆的時候,出現記憶體不足的錯誤訊息 勉勉強強的找了臨時替代方案,在命令提示字元中,使用sqlcmd可以解決這問題 sqlcmd **-S** PcName\SQLEXPRESS **-U** sa **-P** password **-d** DataBaseName **-i** C:\Script.sql **-o**C:\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](http://fannys23.pixnet.net/blog/post/29336021) [[MSSQL] 使用命令列模式執行大量 SQL 語法](http://fannys23.pixnet.net/blog/post/29336021) [http://blog.xuite.net/tolarku/blog/36344366](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
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.