2009-10-23 16 views
5

SQL Server (Standard Edition) yüklüyse, sunucu adı nasıl kod yoluyla alınır.SQL Server (Standard Edition) yüklüyse, sunucu adı nasıl kodlanır

SQL Server'a bağlanmak için bir bağlantı dizesi oluştururken sunucu adını aktarıyoruz. Bu değeri kod aracılığıyla alabilir miyiz?

string sqlConnectionString = string.Format(
"user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB; 
connection timeout={3}", 
dirDBinfo.UserName, dirDBinfo.Password, "ServerName", dirDBinfo.TimeOut); 

cevap

8

Ne istediğinizi anladığımdan emin değilim.

Zaten bir bağlantı dizesi var ve başka bir yerde kullanılmak üzere ondan sunucu adını ayıklamak çalışıyorsanız, bunu gibi tersine mühendislik edebilirsiniz:

var parser = new SqlConnectionStringBuilder(connectionString); 
var serverName = parser.DataSource; 

bağlantı dizesini inşa halinde sonra ilk kez, için:

  1. size istemci kod yürütülen bir makinede SQL server bağlanmak istediğiniz biliyorsanız, o zaman sadece sunucu adı için (local) kullanın. SQL Server'ın bir örnek adı varsa, bunu şu şekilde belirtin: (local)\myinstancename.
  2. Hangi sunucunun bağlanacağını önceden bilmiyorsanız, bu bilgileri başka bir yerden almanız size kalmış.
+1

Katılıyorum - Ashish uygulamasının hangi sunucuyu kullanacağını tahmin etmesini sağlamaya çalıştığı gibi geliyor. Varsayılan yerel örneği '(yerel)' yoluyla seçmek dışında, yalnızca diğer makul seçenek, hangi sunucunun kullanılacağını kodlamaktır. Bunu nasıl yapıyorsun sana kalmış. –

0

Sunucu yerel bilgisayarda mı?
Öyleyse, sunucu adını localhost olarak ayarlayın.
Değilse, use SqlDataSourceEnumerator.


Ayrıca yerine String.Format kullanarak bir bağlantı dizesi bina, bir SqlConnectionStringBuilder kullanmalıdır. Bu, noktalı virgülle değerleri işleyecektir. Örneğin

:

var builder = new SqlConnectionStringBuilder(); 

builder.UserID = dirDBinfo.UserName; 
builder.Password = dirDBinfo.Password; 
builder.Server= "localhost"; 
builder.UserID = dirDBinfo.UserName; 
builder["Trusted_Connection"] = "no"; 
builder.Database = "TestDB" 
builder.ConnectTimeout = dirDBinfo.TimeOut; 
+1

localhost yalnızca adlandırılmış bir örnek değilse –

0

sadece bu bağlamda karşı SEÇ @@ SERVERNAME yürütmek olmaz mı?

+0

no; bir bağlantı dizesi oluşturmaya çalışıyor. – SLaks

+1

bu yüzden hala bağlantı dizgimizi oluşturuyoruz? Bu durumda hangi SQL sunucusunu seçeceğini belirleyen mantık nedir? Yerel ise, dediğiniz gibi - sadece localhost kullanın. Ama daha önce sunucu adının geçtiğini sanıyordum ve şimdi bir şekilde kodu almamız gerekiyor ... – DmitryK

+0

Soruyu anladığım kadarıyla, sorduğu şey bu. – SLaks