Sql server 命令行和控制台使用二三事
近来遇到了几件关于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用户没有设置另外一个数据库的访问权限。