今天发现一个问题,就是公司开发服务器上的sql server使用sa账号登录后,还原一个数据库bak文件老是报错,错误如下:
TITLE: Microsoft SQL Server Management Studio
------------------------------
Restore of database 'Customer' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\Customer.mdf" failed with the operating system error 3(The system cannot find the path specified.). (Microsoft.SqlServer.SmoExtended)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17199.0+((SSMS_Rel).171004-0254)&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
可以看到这个错误是sql server在文件夹C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\下无法生成数据库文件Customer.mdf。然后我怀疑这应该是sql server没权限访问这个文件夹,所以我就尝试了使用windows账号登录而不是sa账号登录sql server,结果还原立马成功了。。。
可是sa账号和windows账号在sql server中都是sysadmin权限,我很纳闷为什么windows账号就可以还原数据库,而sa账号不可以
按道理说sql server去读取备份bak文件及还原数据库为mdf文件,都是由sql server的service服务账号来完成的(如下截图所示),和登录sql server的sa账号和windows账号应该是完全无关的。
所以出现这个问题我也是百思不得其解。。。有明白的朋友欢迎留言解答。。。谢谢~