如何指定以 Shared memory 方式連線到 MSSQL Server

條件如下:

  1. 目標 Microsoft SQL Server instance 要在本機(localhost)
  2. Provider 要跟目標版本一致:
    1. SQLOLEDB : Microsoft SQL Server 2000
    2. SQLNCLI : Microsoft SQL Server 2005
    3. SQLNCLI : Microsoft SQL Server 2008
  3. Connection string 的 Data source 設定成 lpc:

如果要用 TCP/IP 連線的話則是:

  1. 目標 Microsoft SQL Server instance 要連的到
  2. Provider 盡量跟目標版本一致:
    1. SQLOLEDB : Microsoft SQL Server 2000
    2. SQLNCLI : Microsoft SQL Server 2005
    3. SQLNCLI : Microsoft SQL Server 2008
  3. Connection string 的 Data source 設定成 LOCALHOST IP Address HOST NAME
  4. 如果 Port 不使用是預設的 1433,那請加上 [,PORT NUMBER],例如: Data Source = LOCALHOST,1433

Connection string 參考:

Windows 整合型認證:
Provider=SQLNCLI;Data Source=lpc:;Initial Catalog=some_db;Integrated Security=SSPI;
Provider=SQLNCLI;Data Source=LOCALHOST,1433;Initial Catalog=some_db;Integrated Security=SSPI;

SQL Server 認證:
Provider=SQLNCLI;Data Source=lpc:;User ID=sara;Password=iDuNnO;Initial Catalog=some_db;
Provider=SQLNCLI;Data Source=LOCALHOST,1433;User ID=sara;Password=iDuNnO;Initial Catalog=some_db;

至於為什麼會想到研究這個?請看下圖:

協助客戶遷移客戶之前委託其他廠商開發的系統,遷移到新主機後使用者反映很慢,登入不能且報表按下去半天沒出來還有錯誤訊息,結果一追茶包後發現,一隻報表產生程式按下去後的連線數是這樣‧‧‧(顯示為系統對資料庫發動 DoS Attack 狀態)

程式設計真的人外有人天外有天啊~(茶)

分類: 軟體開發,標籤: 。這篇內容的永久連結