2009-10-23 37 views
0

我得到这个“无法打开用户默认数据库。登录失败”错误。我所做的是使用ORM创建DataContext,在代码中调用TableExists函数来检查version_tbl是否存在,如果不存在,则调用脚本来执行exec命令以创建version_tbl。然后创建一个新的dataContext,但是问题出在调用后我在dataContext实体上得到这个错误。如果我删除TableExists调用,那么dataContext创建就绪,或者在TableExists调用之前移动dataContext创建,但是当它尝试连接时,在TableExists调用中发生问题。似乎我只能连接一次。无论如何,我可以调用TableExists然后能够创建dataContext?无法打开用户默认数据库。登录失败错误

下面是我的代码示例

静态布尔TableExists(字符串表名) {

 using (SqlConnection connection = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=planning;Integrated Security=True")) 
     { 

      string checkTable = 

       String.Format(

        "IF OBJECT_ID('{0}', 'U') IS NOT NULL SELECT 'true' ELSE SELECT 'false'", 

        tableName); 



      SqlCommand command = new SqlCommand(checkTable, connection); 

      command.CommandType = CommandType.Text; 

      connection.Open(); 

      bool retVal = Convert.ToBoolean(command.ExecuteScalar());     

      return retVal; 

    } 

}

myFunc() 
{ 
if (!TableExists ("version_tbl")) 
{ 
// call scripts to create version_tbl 
} 

DataContext ctx = new DataContext(); 

回答

0

之前一切你检查,如果你的域用户具有适当的DB rgihts? 尝试首先验证数据库连接。

0

您应该能够同时打开到数据库的两个连接:1到ADO.NET,1到LinqToSql。

由StackOverflow显示的代码格式很难阅读,但在using语句能够关闭连接之前,您似乎是从TableExists方法返回的。如果你改变它,它会有什么区别吗?

根据您打开连接的顺序,还是总是出现相同的错误,您是否收到不同的错误?

+0

密切的没有什么区别,用同样的错误 System.Data.SqlClient.SqlException被抓获 消息=“无法打开用户默认数据库。登录失败。\ r \ n登录名用户失败” 源=” .NET的SqlClient数据提供者 “ 错误码= -2146232060 类= 11 LineNumber上= 65536 总数= 4064 过程= ”“ 服务器=” \\\\。\\管\\ 62547E80-CB39-45 \\ TSQL \\查询“ State = 1 – queandans 2009-10-27 02:16:00

0

不要停止与例外​​。转到数据库并检查日志中的消息。由于安全原因,LOGIN的例外情况不明确,但日志应该更好地解释发生了什么。

相关问题