SQL Server Express Kullanıcı Örnekleri

Microsoft SQL Server Express Edition (SQL Server Express), yalnızca SQL ServerSqlClient () için .NET Framework Veri Sağlayıcısı kullanırken kullanılabilen kullanıcı örneği özelliğini destekler. Kullanıcı örneği, bir üst örnek tarafından oluşturulan SQL Server Express Veritabanı Altyapısı'nın ayrı bir örneğidir. Kullanıcı örnekleri, yerel bilgisayarlarında yönetici olmayan kullanıcıların SQL Server Express veritabanlarına eklemesine ve bu veritabanlarına bağlanmasına izin verir. Her örnek, tek bir kullanıcının güvenlik bağlamı altında, kullanıcı başına bir örnek temelinde çalışır.

Kullanıcı Örneği Özellikleri

Kullanıcı örnekleri, En az ayrıcalıklı bir kullanıcı hesabı (LUA) altında Windows çalıştıran kullanıcılar için kullanışlıdır. Her kullanıcının, Windows yöneticisi olarak da çalıştırmaya gerek kalmadan bilgisayarında çalışan örnek üzerinde SQL Server sistem yöneticisi (sysadmin) ayrıcalıkları vardır. SQL Server Express örneği hizmet olarak değil, kullanıcının yönetici olmayan Windows hesabı altında çalıştığından, sınırlı izinlere sahip bir kullanıcı örneğinde yürütülen yazılımlar sistem genelinde değişiklik yapamaz. Her kullanıcı örneği kendi üst örneğinden ve aynı bilgisayarda çalışan diğer kullanıcı örneklerinden yalıtılır. Bir kullanıcı örneğinde çalışan veritabanları yalnızca tek kullanıcı modunda açılır ve birden çok kullanıcının bir kullanıcı örneğinde çalışan veritabanlarına bağlanması mümkün değildir. Çoğaltma ve dağıtılmış sorgular da kullanıcı örnekleri için devre dışı bırakılır.

Not

Kullanıcı örnekleri, zaten kendi bilgisayarlarında yönetici olan kullanıcılar veya birden çok veritabanı kullanıcısı içeren senaryolar için gerekli değildir.

Kullanıcı Örneklerini Etkinleştirme

Kullanıcı örnekleri oluşturmak için SQL Server Express'in üst örneğinin çalışıyor olması gerekir. SQL Server Express yüklendiğinde kullanıcı örnekleri varsayılan olarak etkinleştirilir ve üst örnekte sp_configure sistem saklı yordamını yürüten bir sistem yöneticisi tarafından açıkça etkinleştirilebilir veya devre dışı bırakılabilir.

-- Enable user instances.  
sp_configure 'user instances enabled','1'
  
-- Disable user instances.  
sp_configure 'user instances enabled','0'  

Kullanıcı örnekleri için ağ protokolü yerel Adlandırılmış Kanallar olmalıdır. Sql Server'ın uzak bir örneğinde kullanıcı örneği başlatılamaz ve SQL Server oturum açma işlemlerine izin verilmez.

Kullanıcı Örneğine Bağlan

User Instance ve AttachDBFilenameConnectionString anahtar sözcükleri, bir SqlConnection kullanıcının örneğine bağlanmasını sağlar. Kullanıcı örnekleri ve AttachDBFilename özellikleri tarafından SqlConnectionStringBuilderUserInstance da desteklenir.

Aşağıda gösterilen örnek bağlantı dizesi hakkında aşağıdakilere dikkat edin:

  • anahtar Data Source sözcüğü, kullanıcı örneğini oluşturan SQL Server Express'in üst örneğine başvurur. Varsayılan örnek .\sqlexpress'tir.

  • Integrated Security olarak ayarlanır true. Bir kullanıcı örneğine bağlanmak için Windows Kimlik Doğrulaması gereklidir; SQL Server oturum açma bilgileri desteklenmez.

  • User Instance, kullanıcı örneğini trueçağıran olarak ayarlanır. (Varsayılan değer. false)

  • AttachDbFileName bağlantı dizesi anahtar sözcüğü, tam yol adını içermesi gereken birincil veritabanı dosyasını (.mdf) eklemek için kullanılır. AttachDbFileNameayrıca bir SqlConnection bağlantı dizesi içindeki "genişletilmiş özellikler" ve "ilk dosya adı" anahtarlarına karşılık gelir.

  • Kanal |DataDirectory| simgelerinde yer alan değiştirme dizesi, bağlantıyı açan uygulamanın veri dizinine başvurur ve .mdf ve .ldf veritabanı ile günlük dosyalarının konumunu gösteren göreli bir yol sağlar. Bu dosyaları başka bir yerde bulmak istiyorsanız, dosyaların tam yolunu sağlamanız gerekir.

Data Source=.\\SQLExpress;Integrated Security=true;  
User Instance=true;AttachDBFilename=|DataDirectory|\InstanceDB.mdf;  
Initial Catalog=InstanceDB;  

Not

çalışma zamanında bir bağlantı dizesi oluşturmak için ve AttachDBFilename özelliklerini de kullanabilirsiniz.SqlConnectionStringBuilderUserInstance

| kullanmaDataDirectory| Değiştirme Dizesi

AttachDbFileName ADO.NET 2.0'da (kanal simgeleri içine alınmış) değiştirme dizesinin |DataDirectory| eklenmesiyle genişletilmişti. DataDirectoryveri dosyasının göreli yolunu belirtmek için ile AttachDbFileName birlikte kullanılır ve geliştiricilerin tam yol belirtmek yerine veri kaynağının göreli yolunu temel alan bağlantı dizesi oluşturmasına olanak sağlar.

İşaret eden DataDirectory fiziksel konum, uygulama türüne bağlıdır. Bu örnekte, eklenecek Northwind.mdf dosyası uygulamanın \app_data klasöründe bulunur.

Data Source=.\\SQLExpress;Integrated Security=true;  
User Instance=true;  
AttachDBFilename=|DataDirectory|\app_data\Northwind.mdf;  
Initial Catalog=Northwind;  

Kullanıldığında DataDirectory , sonuçta elde edilen dosya yolu dizin yapısında değiştirme dizesi tarafından işaret edilen dizinden daha yüksek olamaz. Örneğin, tamamen genişletilmiş DataDirectory C:\AppDirectory\app_data ise, yukarıda gösterilen örnek bağlantı dizesi c:\AppDirectory altında olduğundan çalışır. Ancak, olarak |DataDirectory|\..\data belirtilmeye DataDirectory çalışılması bir hataya neden olur çünkü \data, \AppDirectory'nin alt dizini değildir.

bağlantı dizesi yanlış biçimlendirilmiş bir değiştirme dizesi varsa, bir ArgumentException oluşturulur.

Not

System.Data.SqlClient değiştirme dizelerini yerel bilgisayar dosya sistemine karşı tam yollara çözümler. Bu nedenle uzak sunucu, HTTP ve UNC yol adları desteklenmez. Sunucu yerel bilgisayarda değilse, bağlantı açıldığında bir özel durum oluşur.

SqlConnection açıldığında, varsayılan SQL Server Express örneğinden çağıranın hesabı altında çalışan bir çalışma zamanı tarafından başlatılan örneğe yönlendirilir.

Not

Kullanıcı örneklerinin ConnectionTimeout yüklenmesi normal örneklerden daha uzun sürebileceğinden değeri artırmak gerekebilir.

Aşağıdaki kod parçası yeni SqlConnectionbir açar, konsol penceresinde bağlantı dizesi görüntüler ve kod bloğundan using çıkarken bağlantıyı kapatır.

Private Sub OpenSqlConnection()  
    ' Retrieve the connection string.  
    Dim connectionString As String = GetConnectionString()  
  
    Using connection As New SqlConnection(connectionString)  
        connection.Open()  
        Console.WriteLine("ConnectionString: {0}", _  
           connection.ConnectionString)  
    End Using  
End Sub  
private static void OpenSqlConnection()  
{  
    // Retrieve the connection string.  
    string connectionString = GetConnectionString();  
  
    using (SqlConnection connection =
        new SqlConnection(connectionString))  
    {  
        connection.Open();  
        Console.WriteLine("ConnectionString: {0}",
             connection.ConnectionString);  
    }  
}  

Not

Kullanıcı örnekleri, SQL Server'ın içinde çalışan ortak dil çalışma zamanı (CLR) kodunda desteklenmez. InvalidOperationException, bağlantı dizesi olan User Instance=true bir SqlConnection üzerinde çağrılırsa Open oluşturulur.

Kullanıcı Örneği Bağlan ömrü

Hizmet olarak çalışan SQL Server sürümlerinden farklı olarak, SQL Server Express örneklerinin el ile başlatılması ve durdurulması gerekmez. Bir kullanıcı her oturum açtığında ve bir kullanıcı örneğine bağlandığında, kullanıcı örneği zaten çalışmıyorsa başlatılır. Kullanıcı örneği veritabanları, AutoClose bir süre etkinlik dışı kaldıktan sonra veritabanının otomatik olarak kapatılması için seçenek kümesine sahiptir. Başlatılan sqlservr.exe işlemi, örneğe son bağlantı kapatıldıktan sonra sınırlı bir zaman aşımı süresi boyunca çalışır durumda tutulur, bu nedenle zaman aşımı süresi dolmadan önce başka bir bağlantı açılırsa yeniden başlatılması gerekmez. Bu zaman aşımı süresi dolmadan önce yeni bir bağlantı açılmazsa kullanıcı örneği otomatik olarak kapanır. Üst örnekteki bir sistem yöneticisi, kullanıcı örneği zaman aşımı seçeneğini değiştirmek için sp_configure kullanarak bir kullanıcı örneğinin zaman aşımı süresini ayarlayabilir. Varsayılan değer 60 dakikadır.

Not

bağlantı dizesi sıfırdan büyük bir değerle kullanılırsaMin Pool Size, bağlantı havuzu oluşturucu her zaman birkaç açık bağlantı tutar ve kullanıcı örneği otomatik olarak kapanmaz.

Kullanıcı Örnekleri Nasıl Çalışır?

Her kullanıcı için ilk kez bir kullanıcı örneği oluşturulduğunda, ana ve msdb sistem veritabanları Şablon Verileri klasöründen kullanıcı örneği tarafından özel kullanım için kullanıcının yerel uygulama verileri deposu dizini altındaki bir yola kopyalanır. Bu yol genellikle C:\Documents and Settings\<UserName>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESSşeklindedir. Bir kullanıcı örneği başlatıldığında tempdb, günlük ve izleme dosyaları da bu dizine yazılır. Örnek için her kullanıcı için benzersiz olacağı garanti edilen bir ad oluşturulur.

Varsayılan olarak, Windows Builtin\Users grubunun tüm üyelerine yerel örnekte bağlanma ve SQL Server ikili dosyalarında okuma ve yürütme izinleri verilir. Kullanıcı örneğini barındıran çağıran kullanıcının kimlik bilgileri doğrulandıktan sonra bu kullanıcı bu örnekte olur sysadmin . Kullanıcı örnekleri için yalnızca paylaşılan bellek etkinleştirilir, bu da yalnızca yerel makinedeki işlemlerin mümkün olduğu anlamına gelir.

Kullanıcılara bağlantı dizesi belirtilen .mdf ve .ldf dosyaları üzerinde hem okuma hem de yazma izinleri verilmelidir.

Not

.mdf ve .ldf dosyaları sırasıyla veritabanı ve günlük dosyalarını temsil ediyor. Bu iki dosya eşleştirilmiş bir kümedir, bu nedenle yedekleme ve geri yükleme işlemleri sırasında dikkatli olunmalıdır. Veritabanı dosyası, günlük dosyasının tam sürümü hakkında bilgi içerir ve yanlış günlük dosyasıyla birleştiğinde veritabanı açılmaz.

Veri bozulmasını önlemek için kullanıcı örneğindeki bir veritabanı özel erişimle açılır. İki farklı kullanıcı örneği aynı bilgisayarda aynı veritabanını paylaşıyorsa, ikinci örnekte açılabilmesi için önce ilk örnekteki kullanıcının veritabanını kapatması gerekir.

Kullanıcı Örneği Senaryoları

Kullanıcı örnekleri, veritabanı uygulamalarının geliştiricilerine geliştirme bilgisayarlarında yönetim hesapları olan geliştiricilere bağımlı olmayan bir SQL Server veri deposu sağlar. Kullanıcı örnekleri, veritabanı uygulamasının yalnızca bir dosyaya bağlandığı Access/Jet modelini temel alır ve kullanıcı, izin vermek için bir sistem yöneticisinin müdahalesine gerek kalmadan tüm veritabanı nesneleri üzerinde otomatik olarak tam izinlere sahiptir. Kullanıcının en az ayrıcalıklı bir kullanıcı hesabı (LUA) altında çalıştığı ve sunucuda veya yerel makinede yönetici ayrıcalıklarına sahip olmadığı, ancak veritabanı nesneleri ve uygulamaları oluşturması gereken durumlarda çalışması amaçlanmıştır. Kullanıcı örnekleri, kullanıcıların daha ayrıcalıklı bir sistem hizmetinin güvenlik bağlamında değil kullanıcının kendi güvenlik bağlamı altında çalışan örnekler oluşturmasına olanak tanır.

Önemli

Kullanıcı örnekleri yalnızca onu kullanan tüm uygulamaların tam olarak güvenilir olduğu senaryolarda kullanılmalıdır.

Kullanıcı örneği senaryoları şunlardır:

  • Veri paylaşımının gerekli olmadığı tek kullanıcılı uygulamalar.

  • ClickOnce dağıtımı. Hedef bilgisayarda .NET Framework 2.0 (veya üzeri) ve SQL Server Express zaten yüklüyse, ClickOnce eyleminin sonucu olarak indirilen yükleme paketi yönetici olmayan kullanıcılar tarafından yüklenebilir ve kullanılabilir. Kurulumun bir parçasıysa bir yöneticinin SQL Server Express yüklemesi gerektiğini unutmayın. Daha fazla bilgi için bkz . Windows Forms için ClickOnce Dağıtımı.

  • Windows Kimlik Doğrulaması kullanarak ayrılmış ASP.NET barındırma. İntranet üzerinde tek bir SQL Server Express örneği barındırılabilir. Uygulama, kimliğe bürünme kullanarak değil ASPNET Windows hesabını kullanarak bağlanır. Kullanıcı örnekleri, tüm uygulamaların aynı kullanıcı örneğini paylaşacağı ve artık birbirinden yalıtılmış kalmayacağı üçüncü taraf veya paylaşılan barındırma senaryoları için kullanılmamalıdır.

Ayrıca bkz.