SQL Server bağlantı dizesini nasıl ayarlayabilirim?


96

Basit bir C # uygulaması geliştiriyorum ve şunu bilmek istiyorum: Uygulamamı bilgisayarımdaki SQL Server'a bağladığımda, bağlantı dizesini (sunucu adı, şifre vb.) Biliyorum, ancak onu bağladığımda başka bir PC için SQL Server bağlantı dizesi farklıdır. SQL Server'da bağlanabilen varsayılan bir hesapla birlikte gelen ortak bir hesap var mı?

saSQL Server'daki hesabı duydum . Nedir sa?


5
SQL Server'a veya bu konuyla ilgili herhangi bir bağlantı türüne erişimi ayarlamak için hiçbir zaman varsayılan bir hesap kullanıcı adı ve şifresi kullanmak istemezsiniz.
jordanhill123

4
SAortalama sql sunucu sys_adminrolü
Elshan

2
SQL Server kimlik doğrulaması yerine Windows Kimlik Doğrulaması kullanabilir misiniz? Bu, kullanıcı kimliklerini ve parolaları birlikte kullanmak zorunda kalmaz.
Philip Sheard

Yanıtlar:


133

.NET DataProvider - Kullanıcı adı ve parola ile Standart Bağlantı

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "User id=UserName;" +
  "Password=Secret;";
conn.Open();

.NET DataProvider - Güvenilir Bağlantı

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "Integrated Security=SSPI;";
conn.Open();

Belgelere bakın .


1
Bu biçimi nasıl kullanıp bir etki alanı kullanıcısı kullanabilirim? Kullandığım zaman kırmızı bir alt çizgi alıyorum, user id=Domain\Unamebunun geçersiz kaçış karakterleriyle ilgisi olduğunu düşünüyorum, bunu doğru bir şekilde nasıl yapmalıyım?
Wairimu Murigi

1
@Wairimu Murigi Sen Ters eğik çizgi yani kullanıcı kimliği = Domain \\ Uname kaçmak zorunda
John Hartley

1
@Itachi: Necropost için üzgünüm. Bunu Windows komut satırına SQLCMD kullanarak mı giriyoruz?
MSIS

1
;
Şifrem

1
Bunu sarmak için tek veya çift tırnak deneyebilirsiniz @Kiquenet, kontrol bu dışarı.
Itachi

30

Aslında SqlConnectionStringBuilder, bağlantı dizenizi oluşturmak için sınıfı kullanabilirsiniz . Oluşturmak için bağlantı dizesini , bunu bir nesne örneğini gerekir SqlConnectionStringBuilderve veritabanına bağlanmak için kullandığınız parametrelerle kendi özelliklerini ayarlayın. Sonra alabilirsiniz bağlantı dizesini gelen ConnectionStringgelen özelliği SqlConnectionStringBuilderolarak bu örnekte gösterilen nesne,:

Örneğin:

SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Bunu newdoğrudan yapmak için operatörü kullanabilirsiniz .

Örneğin:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString
);

Bağlantı dizenizi oluşturmak için daha fazla parametre ekleyebilirsiniz . Parametrelerin, SqlConnectionStringBuildernesne özelliklerinde ayarlanan değerlerle tanımlandığını unutmayın .

Ayrıca, Microsoft Visual Studio'nun ekli veritabanıyla bağlantısından veritabanı bağlantı dizesini alabilirsiniz. Veritabanını seçtiğinizde, özellikler panelinde bağlantı dizesi gösterilir .

SqlConnectionStringBuilderSınıfın özelliklerinin tam listesi , Microsoft MSDN sitesindeki bu sayfada listelenmiştir .

SQL Server'ın varsayılan kullanıcısı hakkında sa , "sistem yöneticisi" anlamına gelir ve şifresi SQL Server sürümüne göre değişir. Açık bu sayfada şifre nasıl değiştiğini görebilirsiniz.

SQL Server 2008 / R2 Express Kullanıcı: sa Şifre: [boş şifre - izni alan bağlamak için boş]
SQL Server 201x Express Kullanıcı: sa Şifre: Password123
SQL Server 20xx Web veya Standart Kullanıcı: sa Parola: Yöneticiniz veya aynı olacaktır VDS'nin sağlandığı anda root kullanıcı şifresi.

Sen ile giriş yapabilirsiniz sa SQL Server Veritabanı Yöneticisi başlangıcında bu giriş penceresinde kullanıcı. Bu görseldeki gibi:

Giriş örneği


15

.NET Veri Sağlayıcısı - Varsayılan Göreli Yol - Standart Bağlantı

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();

.NET Veri Sağlayıcısı - Varsayılan Göreli Yol - Güvenilir Bağlantı

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

.NET Veri Sağlayıcısı - Özel Göreli Yol - Standart Bağlantı

using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();  

.NET Veri Sağlayıcısı - Özel Göreli Yol - Güvenilir Bağlantı

 using System.Data.SqlClient;
 AppDomain.CurrentDomain.SetData(
 "DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

Kodu, gerçekten derlenecek şekilde düzeltebilir misiniz? Sen edebilirsiniz Cevabınızı düzenlemek (ancak olmadan veya benzer "Edit:", "Güncelleme").
Peter Mortensen

11

Bağlantı dizesini aşağıdaki gibi kullanabilirsiniz ve yalnızca veritabanı adınızı eklemeniz gerekir.

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";

8

Başka bir makinede SQL Server'a bağlanırken endişelenmeniz gereken birkaç şeydir.

  • Makinenin ana bilgisayar / IP adresi
  • İlk katalog (veritabanı adı)
  • Geçerli kullanıcı adı / şifre

Çoğu zaman SQL Server varsayılan bir örnek olarak çalışıyor olabilir, bu da sadece ana bilgisayar adını / IP adresini belirtebileceğiniz anlamına gelir, ancak adlandırılmış bir örnek olarak çalıştığı bir senaryoyla karşılaşabilirsiniz (örneğin SQL Server Express Edition ). Bu senaryoda, ana bilgisayar adını / örnek adını belirtmeniz gerekir.


6

Sunucunuz etki alanında ise Windows kimlik doğrulamasını veya SQL Server kimlik doğrulamasını kullanabilirsiniz. Sa bir sistem yöneticisi, SQL Server kimlik doğrulaması için kök hesaptır. Ancak müşterilerinize bağlanmak için kullanmak kötü bir uygulamadır.

Kendi hesaplarınızı oluşturmalı ve bunları SQL Server örneğinize bağlanmak için kullanmalısınız. Her bağlantıda, bağlanmak istediğiniz hesap girişini , şifresini ve varsayılan veritabanını ayarlarsınız.


"SQL", "SQL Sunucusu" için geçerli bir kısayol değildir.
Peter Mortensen

6

savarsayılan olarak SQL Server ile birlikte gelen bir sistem yöneticisi hesabıdır. Bildiğiniz gibi zaten bildiğiniz gibi, SQL Server'da oturum açmak için iki yol kullanabilirsiniz.

SQL Server Management Studio'nun ekran görüntüsü

Bu nedenle, her senaryoya uygun bağlantı dizeleri vardır (Windows kimlik doğrulaması, localdb vb.). Bağlantı dizenizi oluşturmak için ASP.NET Web Uygulamaları için SQL Server Bağlantı Dizelerini kullanın . Bunlar XML etiketleridir. Sadece bir connectionString değerine ihtiyacınız var .


5

Bir veritabanı sunucusunun veya DBA'nın yalnızca kimsenin sunucunun içeriğini bağlamasını veya değiştirmesini istemeyeceğini anlamanız gerekir . Güvenlik hesaplarının tüm amacı budur. Tek bir kullanıcı adı / parola herhangi bir makinede işe yarayacaksa, hiçbir koruma sağlamaz.

Duyduğunuz bu "bir" şey SQL Server 2005 , 2008 veya 2012 ile çalışmıyor . Yine de önceki sürümlerden emin değilim. SQL Server'ın ilk günlerinde bir yerlerde varsayılan kullanıcı adı ve parolanın sa / sa olduğuna inanıyorum, ancak artık durum böyle değil.

Bilginize, veritabanı güvenliği ve rolleri günümüzde çok daha karmaşık. Windows tabanlı kimlik doğrulamanın ayrıntılarına bakmak isteyebilirsiniz. SQL Sunucunuz bunun için yapılandırılmışsa, ona bağlanmak için bağlantı dizesinde herhangi bir kullanıcı adı / şifreye ihtiyacınız yoktur. Değiştirmeniz gereken tek şey, sunucu makine adıdır ve aynı bağlantı dizesi, her ikisinin de aynı veritabanı adına sahip olması koşuluyla, her iki makinenizde de çalışacaktır.


1
sa, SQL Server için sysadmin hesabıdır. Sql sunucu kimlik doğrulaması veya karma mod kimlik doğrulaması ile kurulmuşsa, bir sa hesabı oluşturmanız gerekir. İleride başvurmak için, sql sunucu kimlik doğrulaması açıkken kurulmamışsa sa hesabının nasıl kurulacağına dair bir kılavuz .
iCodeSometime

4

Veritabanına şu şekilde bağlanabiliriz:

 uid=username;pwd=password;database=databasename;server=servername

Örneğin:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);

Bu gerçek bir kullanıcı adı / şifre çifti mi?
Peter Mortensen

-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

Bunu dene


Bir açıklama sırayla olacaktır.
Peter Mortensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.