近來遇到了幾件關于sql server的事情。
第一:低版本sqlserver備份竟然無法還原到高版本
奇怪!從來未碰到過。過程如下:
1.在低版本上中備份好了數據庫
2.通過共享將文件拷貝到新服務器上
3.打開控制臺,還原數據庫,結果添加備份文件的時候發現根本看不到拷貝過來的備份bak文件,手工輸入文件名,點添加,但是看不到備份數據庫名稱。
4.既然控制臺不行,那就命令行
restore database WC
from disk ='D:\New folder\test.bak'
with move 'LogicalDataFileName' to 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\WC.MDF',
move 'LogicalLogFileName' to 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\WC.LDF',
replace;
提示錯誤:
?Cannot open backup device Operating system error 5(Access is denied.).
5.看看文件好像也沒有設置特別權限,既然是權限問題,那就將備份文件的權限改成everyone可以讀寫。
再次命令行知悉,還是錯誤,但是錯誤變了。
Msg 3234, Level 16, State 2, Line 1
Logical file 'logicaldatafilename' is not part of database 'WC'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
看錯誤內容,是自己寫錯了日志文件和邏輯文件名
6.再次進入控制臺,還原數據庫,成功。
估計是共享文件夾拷貝時導致文件夾權限有問題。
第二:增加一個索引很難
在控制臺中為表增加了索引,保存總是失敗,難道數據量太多,建立索引時間太長?
'table_TESTFAIL' table
- Unable to modify table. ?
Execution Timeout Expired. ?The timeout period elapsed prior to completion of the operation or the server is not responding.
在查詢分析器使用命令行創建索引,結果還是失敗。
create index index_serial
on [WC].[dbo].[table_TESTFAIL](serial)
with (drop_existing=on) ?
Msg 7999, Level 16, State 9, Line 2
Could not find any index named 'index_serial' for table 'WC.dbo.table_TESTFAIL'.
Completion time: 2025-07-30T23:59:46.5591623-07:00
我都沒有創建,當然找不到咯。自己命令行多寫了with (drop_existing=on) ?導致。
刪除后,索引秒創建,可是在控制臺中修改就不成功,兩者效率相處太大了。
三:sql server的跨數據庫查詢
在存儲過程調用了同服務器上的另外一個數據庫,在控制臺中測試沒有問題,但是程序運行時總是報錯,原因是程序中連接數據庫的sql server用戶沒有設置另外一個數據庫的訪問權限。