运行应用程序通过 Windows 来宾用户帐户连接到 SQL Server

Posted

技术标签:

【中文标题】运行应用程序通过 Windows 来宾用户帐户连接到 SQL Server【英文标题】:Run application connect to SQL Server by Windows Guest user account 【发布时间】:2012-10-02 09:10:55 【问题描述】:

我有一个连接到 SQL Server 2008 数据库的 .NET windows 应用程序,我正在通过网络使用单击一次技术将该应用程序部署在客户端计算机上。

现在我在不同的用户权限下测试应用程序。

当我在管理员用户和标准用户(Windows XP 中的受限用户)上测试应用程序时。并且应用程序运行成功

当我在 Guest 用户帐户上测试应用程序时,我得到了以下 .NET SQL 异常:

The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception.
 9/26/2012 11:25:33 AM: Stack:    at System.Data.SqlClient.SqlConnection..ctor()
 at    
  System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize
 (IData 
 Services dataServices, Object connection)
 at System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
 at System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource 
 mapping)

这是内部异常:

System.TypeInitializationException:“System.Data.SqlClient.SqlConnectionFactory”的类型初始化程序引发了异常。 ---> System.TypeInitializationException:“System.Data.SqlClient.SqlPerformanceCounters”的类型初始化程序引发了异常。 ---> System.UnauthorizedAccessException:对路径“Global.net data provider for sqlserver”的访问被拒绝。 在 System.IO._Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.Threading.Mutex.c_DisplayClass3.<.ctor>b__0(Object userData) 在 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode 代码,CleanupCode backoutCode,对象 userData) 在 System.Threading.Mutex..ctor(Boolean initialOwned,字符串名称,Boolean& createdNew,MutexSecurity mutexSecurity) 在 System.Diagnostics.SharedUtils.EnterMutexWithoutGlobal(字符串 mutexName,Mutex & mutex) 在 System.Diagnostics.SharedPerformanceCounter.Verify(CategoryEntry* currentCategoryPointer) 在 System.Diagnostics.SharedPerformanceCounter.FindCategory(CategoryEntry** returnCategoryPointerReference) 在 System.Diagnostics.SharedPerformanceCounter.GetCounter(字符串计数器名称,字符串实例名称,布尔 enableReuse,PerformanceCounterInstanceLifetime 生命周期) 在 System.Diagnostics.SharedPerformanceCounter..ctor(字符串 catName,字符串 counterName,字符串 instanceName,PerformanceCounterInstanceLifetime 生命周期) 在 System.Diagnostics.PerformanceCounter.Initialize() 在 System.Diagnostics.PerformanceCounter.set_RawValue(Int64 值) 在 System.Data.ProviderBase.DbConnectionPoolCounters.Counter..ctor(字符串 categoryName、String instanceName、String counterName、PerformanceCounterType counterType) 在 System.Data.ProviderBase.DbConnectionPoolCounters..ctor(字符串 categoryName,字符串 categoryHelp) 在 System.Data.SqlClient.SqlPerformanceCounters..ctor() 在 System.Data.SqlClient.SqlPerformanceCounters..cctor() --- 内部异常堆栈跟踪结束 --- 在 System.Data.SqlClient.SqlConnectionFactory..ctor() 在 System.Data.SqlClient.SqlConnectionFactory..cctor() --- 内部异常堆栈跟踪结束 --- 在 System.Data.SqlClient.SqlConnection..cctor()

谁能告诉我如何解决这个问题? :)

【问题讨论】:

看看该异常是否有InnerException 会很有趣。遍历类构造函数链,我能看到的唯一可能的嫌疑人与性能计数器有关。 编辑您的问题 - 不要尝试将复杂项目(需要格式化)放入 cmets。 我在问题正文中添加了内部异常:) 【参考方案1】:

通过 SSMS 添加访客(安全登录),然后将该帐户添加到特定数据库中的 Sercurity Accounts。

【讨论】:

以上是关于运行应用程序通过 Windows 来宾用户帐户连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

Win10怎么启用来宾帐户

怎么禁止guest 来宾帐户?

禁止Guest用户啥意思?

从受限/来宾帐户禁用任务管理器

无法从主机访问 VM 来宾(使用正在运行的 *** 客户端)

共享仅来宾