【问题标题】:unablet to connecto to sql server express database. its used by another process person无法连接到 sql server express 数据库。被另一个流程人员使用
【发布时间】:2014-09-08 12:51:41
【问题描述】:

我正在使用带有 vb.net 4.0 版、Sql Server Express Edition 2008 的 asp.net 我在 App_Data 中有一个名为“数据库”的数据库。我正在使用 WCF 服务连接到数据库并从数据库表中获取登录凭据,它给了我错误。即使在 default.aspx 中使用。它给出了同样的错误。

System.Data.SqlClient.SqlException (0x80131904): Unable to open the physical file "c:\Documents and Settings\Sahil\My Documents\Visual Studio 2010\WebSites\TestSite\App_Data\Database.mdf". Operating system error 32: "32(The process cannot access the file because it is being used by another process.)".
Cannot attach the file 'c:\Documents and Settings\Sahil\My Documents\Visual Studio 2010\WebSites\TestSite\App_Data\Database.mdf' as database 'database'.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()

at login.checkLogin(String username, String pass, String role)

这是 web.config 文件中的连接字符串

<connectionStrings>
    <add name="connection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=c:\Documents and Settings\Sahil\My Documents\Visual Studio 2010\WebSites\TestSite\App_Data\Database.mdf;Database=database;Integrated Security=True;User Instance=True "/>
  </connectionStrings>

WCFservice vb代码文件中的代码如下

dim errorstring as string =""
Dim reader as SqlDataReader
Dim connection As New SqlConnection
connection.ConnectionString = ConfigurationManager.ConnectionStrings("connection").ConnectionString
Dim command As New System.Data.SqlClient.SqlCommand
        command.Connection = connection
        Dim reader As SqlDataReader
        Dim user As String = username
        Dim passwd As String = pass
        Dim LoginRole = role
 command.CommandText = "select [username],[password] from login where username =@user and role=@role"
 command.Parameters.Add("@user", Data.SqlDbType.VarChar).Value = user
 command.Parameters.Add("@role", Data.SqlDbType.VarChar).Value = role
command.connection = connection
try
connection.open()
reader = command.executereader
catch(Exception ex)
errorstring =ex.toString()
finally
connection.close()

【问题讨论】:

    标签: asp.net .net vb.net sql-server-2008


    【解决方案1】:

    看起来问题出在您的连接字符串中。试试这个连接字符串...

    "SERVER=[yourmachinename]\SQLEXPRESS;Database=[yourdatabasename];Trusted_Connection=True"
    

    您正在尝试直接连接到数据库文件,而 SQL Server 正在使用它。

    【讨论】:

    • 我按照你的连接字符串给出了这个
    • System.Data.SqlClient.SqlException (0x80131904):无法打开登录请求的数据库“数据库”。登录失败。用户 'MANCHANDA\Sahil' 登录失败。在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, Boolean breakConnection)
    • SQL Server 是否设置为允许 Windows 身份验证?
    • Matin 的问题很好。另外,如果您设置了 SQL,您的 Windows 用户是否映射到 SQL 登录名?
    • 是的,Sql Server 可以进行 windows 身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多