搜尋此網誌

2014年2月9日 星期日

密碼都對了,可是就是登不進去!!?? 可能是變成非multiple囉

 

怎麼還原資料庫(Restore)後,資料庫的名稱旁多了一個「限制的使用者」呢?該怎麼更改設定?
不要以為這是惡作劇,這不是把資料庫的名稱多加了這一串字,沒那麼無聊





在資料庫的屬性的「選項」中,可以來修改資料庫的限制存取方式

下圖中可以看到總共有三種模式:「Multiple」、「Single」與「Restricted」

  • Single User Mode :同一時間只能任一個使用者登入使用
  • Restricted User Mode : 只有db_owner、dbcreator、sysadmin 群組的人可以登入
  • Multiple User Mode:有權限的都能依權限範圍使用
當然你也可以用 T-SQL 的方式來改變限制存取的方式

ALTER DATABASE [DB_Name] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [DB_Name] SET SINGLE_USER WITH NO_WAIT
或者
EXEC sp_dboption 'DB_Name', 'single user', 'false'
EXEC sp_dboption 'DB_Name', 'single user', 'true'
底下就改成了「單一使用者」了

還原資料庫時,"無法獲得獨佔存取權,因為資料庫正在使用中"的解決方法

使用Sql Server Management Studio 還原資料庫時,
常會遇到 "無法獲得獨佔存取權,因為資料庫正在使用中" 的錯誤訊息

我的一勞永逸解決方法
用指令還原
指令如下

ALTER DATABASE 你的DB名稱 SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE 你的DB名稱 FROM  DISK='C:\你的路徑\你的備份檔點BAK' WITH RESTRICTED_USER,REPLACE
絕對有效

2014年2月6日 星期四

.new 讀資料 sample

using System.Data;
using System.Data.SqlClient;

sql = "SELECT * FROM table";
string _connection = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
SqlConnection conn = new SqlConnection(_connection);
try {
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = sql;
    conn.Open();
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    sda.Fill(ds);
}
catch (Exception) {
    throw;
}
finally {
    conn.Close();
}