我如何知道正在使用哪个用户帐户来执行操作(在SQL Server环境中)?

例如,在安装SQL Server 2008时,我不得不为数据库引擎select一个帐户来运行。

当我使用SQL Server Management Studio附加一个2005数据库文件时,有一个权限错误阻止了数据库的升级。 我检查了数据库文件,并且“SQLServerMSSQLUser $ ComputerName $ MSSQLSERVER”帐户对文件具有完全权限。

所以我想,SQL Server Management Studio是在我的用户名下运行的,没有写权限来升级数据库文件。 所以,我为我的用户名添加了完整的权限,然后工作。

这个事件是导致我问这个问题的原因。 我怎样才能确定一个行动正在运行的帐户? 我以为数据库引擎会处理附加的数据库,但显然不是!

此外,一旦数据库被附加,它似乎已经从安全列表中删除了我的用户名! 所以我想如果我分离数据库,我将不得不在我重新附加数据库之前重新设置文件的权限。

看起来SSMS正在造成这种困惑。 我的猜测是,必须在对话框中select文件意味着帐户SSMS正在运行下也需要该文件的权限。

只要服务帐户有文件的权限,那么你应该可以使用t-sql附加数据库。

尝试使用sp_ attach _db您需要以sa身份login或使用setuser或使用CREATE DATABASE … FOR ATTACH

如果你真的必须使用SSMS,并想到T-SQL使你想吐,然后创build一个用户帐户的SQL服务运行在&然后使用此帐户启动SSMS。

如果您知道可执行文件的名称,则任务pipe理器的“进程”选项卡将显示正在运行该文件的用户名。

我在这里find了答案:
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 Serverlogin名的混合安全帐户,假冒可能会失败。“

此外,它明确指出:“文件访问权限是在以下任何数据库操作期间设置的:创build,附加,分离,修改以添加新文件,备份或恢复。

显然,我需要RTFM,哈哈。