从VB.NET执行索引重建

问题描述 投票:0回答:1

我试图从VB.NET控制台应用程序调用索引重建存储过程,但我得到“用户没有权限执行此操作”错误。

我使用与控制台应用程序连接字符串相同的用户标识登录到SQL服务器,并设法通过SQL Management Studio运行相同的存储过程。

在尝试使其工作时,我授予了userid完整服务器管理员访问权限,但仍然发生错误,但仅在从控制台应用程序调用时。

代码是

Private conPR As New SqlConnection(GetConnectionString.getconnectionstring("PR"))
Dim rebuildindexstr As String = "Exec sp_msforeachtable 'SET QUOTED_IDENTIFIER ON; ALTER INDEX ALL ON ? REBUILD';"
Dim rebuildindexpro As New SqlCommand(rebuildindexstr, conPR)
conPR.Open()
rebuildindexpro.CommandTimeout = 0
rebuildindexpro.ExecuteNonQuery()
conPR.Close()

GetConnectionString只从文本文件Server =; Database =; uid =; Password =中读取所需的连接字符串

我在整个程序中成功使用相同的连接字符串。

有没有人设法从VB.NET控制台应用程序执行索引重建?

sql sql-server vb.net
1个回答
0
投票

尝试改变这一行:

Dim builder As SqlConnectionStringBuilder = New 
    SqlConnectionStringBuilder("Integrated Security=SSPI;") 

要么

Dim builder As SqlConnectionStringBuilder = New 
    SqlConnectionStringBuilder("Integrated Security=true;")

这意味着什么:

Integrated Security = False:在连接中指定了用户ID和密码。

Integrated Security = true:当前的Windows帐户凭据用于身份验证。但是,要小心它并不适用于所有SQL提供程序。它会向OleDb提供者抛出异常。

Integrated Security = SSPI:这相当于true,但它适用于SQL ClientOleDb提供商。

Please, see connection strings at MSDN.

更新:此外,尝试为您的用户设置以下角色,例如publicsysadmin

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.