例如,在安装 SQL Server 2008 时,我必须为数据库引擎选择一个帐户来运行。
当我使用 SQL Server Management Studio 附加 2005 数据库文件时,出现权限错误,阻止数据库升级。我检查了数据库文件,并且“SQLServerMSSQLUser$ComputerName$MSSQLSERVER”帐户对该文件具有完全权限。
所以我认为 SQL Server Management Studio 是在我的用户名下运行的,它没有升级数据库文件的写入权限。因此,我为我的用户名添加了完全权限,然后它就起作用了。
这件事让我提出了这个问题。我如何确定某个操作在哪个帐户下运行?我以为数据库引擎会处理附加数据库,但显然不是!
此外,一旦附加数据库,它似乎已经从安全列表中删除了我的用户名!所以我想如果我分离数据库,我将不得不再次重置我对文件的权限,然后才能重新附加数据库。
看起来 SSMS 导致了这种混乱。我的猜测是,必须在对话框中选择文件意味着运行 SSMS 的帐户也需要对该文件的权限。
只要服务帐户对该文件具有权限,那么您应该能够使用 t-sql 附加数据库。
尝试使用sp_ attach _db您需要以 sa 身份登录或使用setuser 或使用CREATE DATABASE ... FOR ATTACH
如果你真的必须使用 SSMS 并且 T-SQL 的想法让你想呕吐然后创建一个用户帐户,以便在 sql server 服务下运行,然后使用这个帐户来启动 SSMS。
如果您知道可执行文件的名称,则任务管理器的进程选项卡将显示运行该文件的用户名。
我在这里找到了答案:
http ://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22785783.html
相关的 SQL Server 文档在这里:http:
//msdn2.microsoft.com/en-us/library/ms189128.aspx
“当您分离或附加数据库时,数据库引擎会尝试模拟执行连接的 Windows 帐户操作以保证该帐户有权访问数据库和日志文件。对于使用 SQL Server 登录的混合安全帐户,模拟可能会失败。
此外,它明确指出:“在以下任何数据库操作期间设置文件访问权限:创建、附加、分离、修改以添加新文件、备份或恢复。”
显然,我需要RTFM,哈哈。