2009-10-23 36 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的例外情況不明確,但日誌應該更好地解釋發生了什麼。

相關問題