sql - 从 VB.NET 执行索引重建
问题描述
我正在尝试从 VB.NET 控制台应用程序调用 Index Rebuild 存储过程,但我收到“用户没有执行此操作的权限”错误。
我已经使用与控制台应用程序连接字符串相同的用户 ID 登录到 SQL 服务器,并设法通过 SQL Management Studio 运行相同的存储过程。
在尝试使其正常工作时,我授予用户 ID 完整的服务器管理员访问权限,但仍然发生错误,但仅在从控制台应用程序调用时发生。
代码是
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 Client
和OleDb
提供程序。
更新:
此外,尝试为您的用户设置以下角色,例如public
和sysadmin
:
推荐阅读
- python - 错误关系“demographic_types”不存在是什么意思?
- machine-learning - 为更新数据训练神经网络
- transactions - 等待 NDB 中的事务完成
- docker - Docker - Docker Compose 停止公司级服务而不是基础服务
- javascript - 如何在 JavaScript 中为一组字母(小写和大写)实现排列生成器(或记忆函数)?
- java - 如何在 Spring Data 中编写 Couchbase N1QL 查询?
- javascript - 使用 momentjs 转换天数以获取两个日期的小时、分钟和秒
- php - 我想要一个数组列表中的 php api 响应
- angular - Mat-图标名称列表
- scala - 如何使用scala替换txt文件中的特定文本