Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az SQL Server Express Edition támogatja a felhasználói példány funkcióját, amely csak a .NET-keretrendszer SQL Server-adatszolgáltató (SqlClient) használatakor érhető el. A felhasználói példány az SQL Server Express Database Engine egy külön példánya, amelyet egy szülőpéldány hoz létre. A felhasználói példányok lehetővé teszik a helyi számítógépeken a nem rendszergazda felhasználók számára, hogy SQL Server Express-adatbázisokat csatoljanak és csatlakozzanak azokhoz. Minden példány az egyes felhasználók biztonsági környezetében fut, felhasználónkénti egypéldányos alapon.
Felhasználói példány képességei
A felhasználói példányok olyan felhasználók számára hasznosak, akik a Windowst a minimális jogosultságú felhasználói fiók (LUA) alatt futtatják. Minden felhasználó rendelkezik SQL Server-rendszergazdai (sysadmin) jogosultságokkal a számítógépen futó példányon anélkül, hogy Windows-rendszergazdaként kellene futnia. A korlátozott engedélyekkel rendelkező felhasználói példányon végrehajtó szoftverek nem végezhetnek rendszerszintű módosításokat, mert az SQL Server Express példánya a felhasználó nem rendszergazdai Windows-fiókja alatt fut, nem szolgáltatásként. Minden felhasználói példány el van különítve a szülőpéldánytól és az ugyanazon a számítógépen futó többi felhasználói példánytól. A felhasználói példányokon futó adatbázisok csak egyfelhasználós módban nyílnak meg, és több felhasználó nem csatlakozhat a felhasználói példányon futó adatbázisokhoz. A replikáció és az elosztott lekérdezések a felhasználói példányok esetében is le vannak tiltva.
Megjegyzés
A felhasználói példányokra nincs szükség azokhoz a felhasználókhoz, akik már rendszergazdák a saját számítógépükön, vagy több adatbázis-felhasználót érintő forgatókönyvekhez.
Felhasználói példányok engedélyezése
Felhasználói példányok létrehozásához az SQL Server Express szülőpéldányának futnia kell. A felhasználói példányok alapértelmezés szerint engedélyezve vannak az SQL Server Express telepítésekor, és explicit módon engedélyezhetik vagy letilthatják őket egy rendszergazda, aki végrehajtja a sp_configure rendszer által tárolt eljárást a szülőpéldányon.
-- Enable user instances.
sp_configure 'user instances enabled','1'
-- Disable user instances.
sp_configure 'user instances enabled','0'
A felhasználói példányok hálózati protokolljának helyi Nevesített Csöveken kell alapulnia. A felhasználói példányok nem indíthatók el az SQL Server távoli példányán, és az SQL Server-bejelentkezések nem engedélyezettek.
Csatlakozás felhasználói példányhoz
A User Instance és AttachDBFilenameConnectionString kulcsszavak lehetővé teszik a SqlConnection csatlakozását egy felhasználói példányhoz. A felhasználói példányokat a SqlConnectionStringBuilderUserInstance és AttachDBFilename tulajdonságok is támogatják.
Vegye figyelembe az alábbi kapcsolati karakterláncot.
Data Source=.\\SQLExpress;Integrated Security=true;
User Instance=true;AttachDBFilename=|DataDirectory|\InstanceDB.mdf;
Initial Catalog=InstanceDB;
Ebben a kapcsolati lánc:
- A
Data Sourcekulcsszó a felhasználói példányt létrehozó SQL Server Express szülőpéldányára hivatkozik. Az alapértelmezett példány az .\sqlexpress. -
Integrated Securitybeállítás értéke :true. Felhasználói példányhoz való csatlakozáshoz Windows-hitelesítés szükséges; Az SQL Server-bejelentkezések nem támogatottak. - A
User Instanceértéketrue-re van állítva, ami felhasználói példányt hoz létre. (Az alapértelmezett érték afalse.) - A
AttachDbFileNamekapcsolati sztring kulcsszó az elsődleges adatbázisfájl (.mdf) csatolására szolgál, amelynek tartalmaznia kell a teljes elérési utat.AttachDbFileNamemegfelel a "kiterjesztett tulajdonságok" és a "kezdeti fájlnév" kulcsoknak egy SqlConnection kapcsolati karakterláncban. - A csőszimbólumokban található
|DataDirectory|helyettesítésre szolgáló sztring a kapcsolatot megnyitó alkalmazás adatkönyvtárára utal, és egy relatív elérési utat biztosít, amely jelzi a .mdf és .ldf adatbázis- és naplófájlok helyét. Ha máshol szeretné megtalálni ezeket a fájlokat, meg kell adnia a fájlok teljes elérési útját.
Megjegyzés
A kapcsolati sztring futásidőben történő létrehozásához használhatja a SqlConnectionStringBuilder.UserInstance és SqlConnectionStringBuilder.AttachDBFilename tulajdonságokat is.
Fontos
A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.
A |DataDirectory| helyettesítési sztring használata
AttachDbFileName ADO.NET 2.0-s verziójában kiterjesztették a |DataDirectory| (csőszimbólumok közé zárt) helyettesítési sztring bevezetésével.
DataDirectory a AttachDbFileName-gyel együtt használható az adatfájlok relatív elérési útjának jelzésére, lehetővé téve a fejlesztők számára, hogy a teljes elérési út megadása helyett olyan kapcsolati sztringet hozzanak létre, amely az adatforrás relatív elérési útján alapul.
Az a fizikai hely, amelyre a DataDirectory mutat, az alkalmazás típusától függ. Ebben a példában a csatolandó Northwind.mdf fájl az alkalmazás \app_data mappájában található.
Data Source=.\\SQLExpress;Integrated Security=true;
User Instance=true;
AttachDBFilename=|DataDirectory|\app_data\Northwind.mdf;
Initial Catalog=Northwind;
Használatakor DataDirectory az eredményül kapott fájl elérési útja nem haladhatja meg a könyvtárszerkezetben azt a könyvtárat, amelyet a helyettesítő karakterlánc mutat. Ha például a teljesen kibontott DataDirectory érték C:\AppDirectory\app_data, akkor a fent bemutatott kapcsolati sztring működik, mert a c:\AppDirectory alatt van. Ha azonban megkísérli megadni DataDirectory|DataDirectory|\..\data , az hibát fog eredményezni, mert az \data nem az \AppDirectory alkönyvtára.
Ha a kapcsolati sztring helytelenül formázott helyettesítési sztringgel rendelkezik, a rendszer egy ArgumentException hibát fog dobni.
Megjegyzés
System.Data.SqlClient a helyettesítő karakterláncokat a helyi számítógép fájlrendszerének teljes elérési útjaivá oldja fel. Ezért a távoli kiszolgáló, a HTTP és az UNC elérési út neve nem támogatott. Kivétel történik a kapcsolat megnyitásakor, ha a kiszolgáló nem a helyi számítógépen található.
A SqlConnection megnyitásakor átirányításra kerül az alapértelmezett SQL Server Express példányról egy, a futtatókörnyezet által indított példányra, amely a hívó fiókjával azonosított fiók alatt fut.
Megjegyzés
Szükség lehet az érték növelésére, mivel a ConnectionTimeout felhasználói példányok betöltése hosszabb időt vehet igénybe, mint a normál példányok.
A következő kódtöredék megnyit egy új SqlConnection-t, megjeleníti a kapcsolati karakterláncot a konzolablakban, majd bezárja a kapcsolatot, amikor kilép a using kódblokkból.
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);
}
}
Megjegyzés
A felhasználói példányok nem támogatottak az SQL Serveren belül futó közös nyelvi futtatókörnyezeti (CLR-) kódban. A InvalidOperationException dobás akkor történik, ha Open olyanra SqlConnection van meghívva, amely User Instance=true a kapcsolati sztring van.
Felhasználói példány kapcsolatának élettartama
A szolgáltatásként futó SQL Server-verzióktól eltérően az SQL Server Express-példányokat nem kell manuálisan elindítani és leállítani. Minden alkalommal, amikor egy felhasználó bejelentkezik és csatlakozik egy felhasználói példányhoz, a rendszer elindítja a felhasználói példányt, ha még nem fut. A felhasználói példányok adatbázisainak AutoClose beállítása úgy van kialakítva, hogy az adatbázis egy inaktivitási időszak után automatikusan leálljon. Az elindított sqlservr.exe folyamat a példányhoz való utolsó kapcsolat lezárása után korlátozott ideig fut, ezért nem kell újraindítani, ha egy másik kapcsolat megnyílik az időkorlát lejárta előtt. A felhasználói példány automatikusan leáll, ha az adott időtúllépési időszak lejárta előtt nem nyílik meg új kapcsolat. A fölérendelt példány rendszergazdája a felhasználói példány időtúllépési beállításának módosításával sp_configure beállíthatja a felhasználói példányok időtúllépési időtartamát. Az alapértelmezett érték 60 perc.
Megjegyzés
Ha Min Pool Size a kapcsolati sztring nullánál nagyobb értékkel használják, a kapcsolatkészletező mindig tart fenn néhány megnyitott kapcsolatot, és a felhasználói példány nem fog automatikusan leállni.
Hogyan működnek a felhasználói példányok
Amikor először hoz létre felhasználói példányt egy felhasználóhoz, a master és msdb rendszeradatbázisok át lesznek másolva a Sablonadatok mappából a felhasználó helyi alkalmazásadattár könyvtárában lévő útvonalra, hogy a felhasználópéldány kizárólagosan által használható legyen. Ez az elérési út általában C:\Documents and Settings\<UserName>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS. Amikor elindul egy felhasználói példány, a rendszer a tempdb, a napló és a nyomkövetési fájlokat is ebbe a könyvtárba írja. Létrejön egy név a példányhoz, amely garantáltan egyedi lesz az egyes felhasználók számára.
Alapértelmezés szerint a Windows Builtin\Users csoport összes tagja engedélyt kap a helyi példányon való csatlakozásra, valamint az SQL Server bináris fájljain lévő engedélyek olvasására és végrehajtására. A hívó felhasználó, aki a felhasználói példányt üzemelteti, hitelesítő adatainak ellenőrzése után az adott példányon sysadmin rangot kap. Csak a megosztott memória engedélyezve van a felhasználói példányok esetében, ami azt jelenti, hogy csak a helyi gépen végezhető műveletek.
A felhasználóknak olvasási és írási engedélyeket kell adni a kapcsolati sztring megadott .mdf és .ldf fájlokra.
Megjegyzés
A .mdf és az .ldf fájlok az adatbázist és a naplófájlokat jelölik. Ez a két fájl egyező készlet, ezért a biztonsági mentési és visszaállítási műveletek során gondoskodni kell róla. Az adatbázisfájl információt tartalmaz a naplófájl pontos verziójáról, és az adatbázis nem nyílik meg, ha nem a megfelelő naplófájlhoz van társítva.
Az adatok sérülésének elkerülése érdekében a felhasználói példányban lévő adatbázis kizárólagos hozzáféréssel nyílik meg. Ha két különböző felhasználói példány osztozik ugyanazon az adatbázison ugyanazon a számítógépen, az első példány felhasználójának be kell zárnia az adatbázist, mielőtt egy második példányban megnyitható lenne.
Felhasználói példányok forgatókönyvei
A felhasználói példányok olyan SQL Server-adattárat biztosítanak az adatbázis-alkalmazások fejlesztőinek, amely nem függ attól, hogy a fejlesztők rendszergazdai fiókokkal rendelkeznek a fejlesztői számítógépükön. A felhasználói példányok az Access-/Jet-modellen alapulnak, ahol az adatbázis-alkalmazás egyszerűen egy fájlhoz csatlakozik, és a felhasználó automatikusan teljes engedélyekkel rendelkezik az összes adatbázis-objektumhoz anélkül, hogy rendszergazda beavatkozása szükséges az engedélyek megadásához. Olyan helyzetekben használható, amikor a felhasználó egy minimális jogosultságú felhasználói fiók (LUA) alatt fut, és nem rendelkezik rendszergazdai jogosultságokkal a kiszolgálón vagy a helyi gépen, de adatbázis-objektumokat és alkalmazásokat kell létrehoznia. A felhasználói példányok lehetővé teszik a felhasználók számára, hogy futtatókörnyezetben olyan példányokat hozzanak létre, amelyek a felhasználó saját biztonsági környezetében futnak, és nem egy kiemeltebb rendszerszolgáltatás biztonsági környezetében.
Fontos
A felhasználói példányokat csak olyan helyzetekben szabad használni, ahol az azt használó összes alkalmazás teljes mértékben megbízható.
A felhasználói esetek a következők:
Minden olyan egyfelhasználós alkalmazás, amelyben nincs szükség adatok megosztására.
ClickOnce-telepítés. Ha .NET-keretrendszer 2.0 (vagy újabb) és SQL Server Express már telepítve van a célszámítógépen, a ClickOnce művelet eredményeként letöltött telepítőcsomagot a nem rendszergazdai felhasználók is telepíthetik és használhatják. Vegye figyelembe, hogy a rendszergazdának telepítenie kell az SQL Server Expresst, ha ez a beállítás része. További információ: ClickOnce Deployment for Windows Forms.
Dedikált ASP.NET üzemeltetés Windows-hitelesítéssel. Egyetlen SQL Server Express-példány üzemeltethető egy intraneten. Az alkalmazás az ASPNET Windows-fiókkal csatlakozik, nem megszemélyesítéssel. A felhasználói példányok nem használhatók olyan külső vagy megosztott üzemeltetési forgatókönyvekhez, ahol minden alkalmazás ugyanazt a felhasználói példányt használná, és a továbbiakban nem maradna elkülönítve egymástól.