使用 SQL SMO 读取 SQL 作业的最低权限
我编写了一个应用程序来使用 SQL SMO 查找所有 SQL Server、数据库、作业和作业结果。该应用程序是使用本地服务帐户通过计划任务执行的。此服务帐户仅位于应用程序服务器本地,并且不存在于任何要检查的 SQL Server 中。 当使用对系统表具有 dbReader 权限的用户连接到服务器时,我在获取有关作业和作业结果的信息时遇到问题。如果我们将用户设置为服务器上的 sysadmin,则一切正常。
我的问题是:本地 SQL Server 用户需要拥有哪些最低权限才能连接到服务器并使用 SQL SMO API 检查作业/作业结果?
我通过执行以下操作连接到每个 SQL Server:
var conn = new ServerConnection
{
LoginSecure = false,
ApplicationName = "SQL Inspector",
ServerInstance = serverInstanceName,
ConnectAsUser = false,
Login = user,
Password = password
};
var smoServer = new Server (conn);
我通过读取 smoServer.JobServer.Jobs 来读取作业,并读取每个作业的 JobSteps 属性。
变量 server 的类型为 Microsoft.SqlServer.Management.Smo.Server。 用户/密码是在每个要检查的 SQL Server 中找到的用户的用户/密码。
如果“用户”是要检查的 SQL Server 上的系统管理员,则一切正常,并且如果我们将 ConnectAsUser 设置为 true 并使用我自己的凭据执行计划任务,这将根据我的 Active Directory 成员身份授予我 SQL Server 上的系统管理员权限。
谢谢!
I wrote an application to use SQL SMO to find all SQL Servers, databases, jobs and job outcomes. This application is executed through a scheduled task using a local service account. This service account is local to the application server only and is not present in any SQL Server to be inspected.
I am having problems getting information on job and job outcomes when connecting to the servers using a user with dbReader rights on system tables. If we set the user to be sysadmin on the server it all works fine.
My question to you is: What are the minimum privileges a local SQL Server user needs to have in order to connect to the server and inspect jobs/job outcomes using the SQL SMO API?
I connect to each SQL Server by doing the following:
var conn = new ServerConnection
{
LoginSecure = false,
ApplicationName = "SQL Inspector",
ServerInstance = serverInstanceName,
ConnectAsUser = false,
Login = user,
Password = password
};
var smoServer = new Server (conn);
I read the jobs by reading smoServer.JobServer.Jobs and read the JobSteps property on each of these jobs.
The variable server is of type Microsoft.SqlServer.Management.Smo.Server.
user/password are of the user found in each SQL Server to be inspected.
If "user" is SysAdmin on the SQL Server to be inspected all works ok, as well as if we set ConnectAsUser to true and execute the scheduled task using my own credentials, which grants me SysAdmin privileges on SQL Server per my Active Directory membership.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己刚刚经历过这个。
从 SQL Books Online 中,我发现了以下内容......
Just been through this myself.
From SQL Books Online, here's what I found out...