摘要:專案中出現 sp_configure User instances enabled 的錯誤時(SQL Express 2005)
前言…
前一陣子同學們為了要專題製作,我當然就不藏私地推薦 VS 2008 給她們用!說這個很容易上手不會很難 ( 五個女生都沒有寫過程式的 )
過了二個月了已經看她們一點一滴地把程式的雛形建立起來 ( 會動喔!還有連資料庫 )
實在很少看到有女同學這麼努力自已看書
當然這麼努力的同學遇到問題一定要幫忙一下啦!! ( 決不是因為女的同學的關係 @@ )
問題
因為她們都是各自在自已的電腦上開發,也沒有用任何的版本管控之類的。
而且資料庫還是跟著專案走的 ( 沒有在 SQL Server 建立 instances )
在程式版本蓋來蓋去的情況下,他們的程式碼一執行到資料庫時出現了以下的錯誤
「SP_configure 'User instances enabled'」
一開始還真的搞不懂,這是啥錯誤。
但知道應該要程式在運行時才會把 instances 起來
所以直覺就覺得這是設定上造成的
稍微 debug 了一下很快就確定是 connection 出現問題
首先先把方案總管中的 xxx.mdf 按兩下,就會在伺服器總管中建立 xxx.mdf 的連線
但居然發生錯誤,同學這時說 user instances 要在這裡改成 True
很可惜按下「測試連線」還是錯誤
這時直覺認為這是 SQL Express 有設定沒開
Google 了一下發現 SQL Express 這以下的設定要改 ( 請用 SQL 中的 Query 視窗 )
exec sp_configure 'user instances enabled',1
reconfigure
1 = 開啟 , 0 = 關閉
重新再「測試連線」
「通過」 Bing go
再馬上跑一次程式,居然還是錯 ,問下來才發現原來 connection string 有被修改過
比對了一下 Connection string 居然沒有用 AttachDbFilename 的方式去連線。而是用SQL Server 的方式去連就會一直出現「帳號」無法找到正確的資料庫
再回到 MSDN 找一下設定
<add name="鐵馬ms.My.MySettings.wildhorseConnectionString1" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\wildhorse.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
providerName="System.Data.SqlClient" />
重新執行程式,果然一切都正常了
要注意
- SQL Express 本身是否支援 User Instances
- 程式碼中的 Connection String 是否有正確設定
- 由於是給大家用的,所以 Data source 的 sqlexpress 前面一定要用「.」這樣子才不會去找其他人的電腦
起初以為只要花 30 分鐘,沒想到卻搞了一個半小時 @@
果然 Debug 要常練習呀 XDDD