繁体   English   中英

从VB.NET执行索引重建

[英]Performing an Index Rebuild from VB.NET

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

我已经使用与控制台应用程序连接字符串相同的用户名登录到SQL Server,并设法通过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控制台应用程序执行索引重建?

尝试更改此行:

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提供程序一起使用。

请在MSDN上查看连接字符串。

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM