我如何知道哪个用户帐户正在用于执行某个操作(在 SQL Server 上下文中)?

我如何知道哪个用户帐户正在用于执行某个操作(在 SQL Server 上下文中)?

例如,在安装 SQL Server 2008 时,我必须选择一个帐户来运行数据库引擎。

当我使用 SQL Server Management Studio 附加 2005 数据库文件时,出现权限错误,导致数据库升级失败。我检查了数据库文件,发现“SQLServerMSSQLUser$ComputerName$MSSQLSERVER”帐户对该文件具有完全权限。

因此,我认为 SQL Server Management Studio 以我的用户名运行,而我的用户名没有写入权限来升级数据库文件。因此,我为我的用户名添加了完全权限,然后它就成功了。

正是这次事件让我产生了这个问题。我如何才能确切地知道某个操作是在哪个帐户下运行的?我以为数据库引擎会处理附加数据库,但显然不是!

此外,一旦附加了数据库,它似乎就将我的用户名从安全列表中删除了!所以我想,如果我分离数据库,我必须再次重置我对文件的权限,然后才能重新附加数据库。

答案1

看起来 SSMS 造成了这种混乱。我猜想,必须在对话框中选择文件意味着运行 SSMS 的帐户也需要该文件的权限。

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

尝试使用sp_attach_db您需要以 sa 身份登录或使用设置用户 或使用创建数据库... 用于连接

如果你真的必须使用 SSMS 并且 T-SQL 的想法让您想要放弃然后为 sql 服务器服务创建一个用户帐户以在其下运行然后使用该帐户启动 SSMS。

答案2

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

答案3

我在这里找到了答案:
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 登录名的混合安全帐户,模拟可能会失败。”

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

显然,我需要阅读手册,哈哈。

相关内容