Jon*_*eet 26 .net sql sql-server asp.net permissions
最近迁移了托管csharpindepth.com的服务器.
大多数工作正常,但我无法进入用于举行勘误表,笔记等的数据库.
相关细节:
连接字符串:
Data Source=.;AttachDbFilename=|DataDirectory|\WebSiteData.mdf;
Integrated Security=True;User Instance=True
Run Code Online (Sandbox Code Playgroud)我只是通过创建一个新WebSiteDataContext的连接(它具有上面的连接字符串作为其默认值)
使用从包含文件的目录运行的小型测试控制台应用程序作为管理员帐户,使用相同的查询,我可以看到数据库的内容.
在ASP.NET中,我遇到了这个异常:
SqlException (0x80131904): User does not have permission to perform this action.
Run Code Online (Sandbox Code Playgroud)
编辑:更多信息,这里是堆栈跟踪:
[SqlException (0x80131904): User does not have permission to perform this action.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +342
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4859187
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) +44
System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() +45
System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() +20
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +57
System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +35
Run Code Online (Sandbox Code Playgroud)
编辑:我错误的文件名必须是正确的 - 更改连接字符串,使其与不同的文件交谈不会改变错误.
ProcMon从未显示它触及文件...
编辑:更奇怪 - 重新启动应用程序池与它在本地系统帐户下运行仍然有问题,这是奇怪的,它得到!就好像,尽管有错误消息,它实际上是在尝试做一些不可能的事情(例如,使用错误的路径),而不仅仅是一个权限问题.
编辑:更多信息 - 我只是从服务运行我的小测试控制台应用程序作为"网络服务"和(在初始尝试超时后)它成功.因此,就用户帐户而言,它不是权限...它是关于它运行的环境的...
儿童实例甚至开始了吗?当请求RANU数据库时,主实例(在这种情况下为.\ SQLEXPRESS)必须创建一个'子'实例,换句话说,启动sqlservr.exe进程作为在请求RANU的用户的凭据下运行的用户进程来自.SQLEXPRESS实例的连接.在这种情况下,实例必须以"网络服务"启动.
要验证子实例是否已启动,请连接到主实例(.\ SQLEXPRESS)并检查sys.dm_os_child_instances:
SELECT *
FROM sys.dm_os_child_instances
Run Code Online (Sandbox Code Playgroud)
如果启动了NETWORK SERVICE拥有的子实例,请将其取出instance_pipe_name并直接连接到子实例:
sqlcmd -S np:\\.\pipe\<child pipe name>\tsql\query
Run Code Online (Sandbox Code Playgroud)
理想情况下,连接为NETWORK SERVICE(例如,从作为NEWTORK SERVICE启动的交互式cmd控制台启动,也许使用at.exe将来安排它1分钟).如果可行,最后一步是尝试使用常规sp_attach_db附加MDF.
这些步骤的想法不是解决问题,而是查明失败的原因,因为你得到的错误是有点通用的......并不完全有用.
| 归档时间: |
|
| 查看次数: |
5797 次 |
| 最近记录: |