Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Microsoft SQL Server Express Edition (SQL Server Express) támogatja a felhasználói példány funkciót, amely csak akkor érhető el, ha az SQL Serverhez készült Microsoft SqlClient-adatszolgáltatót használja. 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, hogy a helyi számítógépeken nem rendszergazda felhasználók SQL Server Express-adatbázisokat csatoljanak és kapcsolódjanak azokhoz. Minden példány az egyes felhasználók biztonsági környezetében fut, egy példány jut minden felhasználóra.
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 egy minimális jogosultságú felhasználói fiók (LUA) alatt futtatják, mivel 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.
Lásd az SQL Server Books Online-ban található "Felhasználói példányok" részt további információért.
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 egységek 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 a rendszergazda explicit módon engedélyezheti vagy letilthatja őket a szülőpéldányon a sp_configure rendszer által tárolt eljárás végrehajtásával.
-- 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öveknek kell lennie. 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.
Felhasználói példányhoz csatlakozás
A User Instance és AttachDBFilenameConnectionString kulcsszavak lehetővé teszik, hogy egy SqlConnection felhasználói példányhoz csatlakozzon. A felhasználói példányokat a SqlConnectionStringBuilderUserInstance és AttachDBFilename tulajdonságok is támogatják.
Vegye figyelembe az alábbiakat az alább látható minta kapcsolati sztringről:
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ánynév a következő: .\sqlexpress.Integrated Securitytrueértékre van állítva. 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 Instancebeállításatrueértékre van állítva, amely egy felhasználói példányt indít. (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. AAttachDbFileNamea "kiterjesztett tulajdonságok" és a "kezdeti fájlnév" kulcsoknak is megfelel a SqlConnection kapcsolati sztringen belül.A
|DataDirectory|pipe szimbólumokkal elválasztott helyettesítési sztring az alkalmazás adatkönyvtárára utal, amely megnyitja a kapcsolatot, és relatív elérési utat biztosít, jelezve a .mdf és az .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.
Data Source=.\\SQLExpress;Integrated Security=true;
User Instance=true;AttachDBFilename=|DataDirectory|\InstanceDB.mdf;
Initial Catalog=InstanceDB;
Megjegyzés:
A kapcsolati sztring futásidőben történő létrehozásához használhatja a SqlConnectionStringBuilderUserInstance és AttachDBFilename tulajdonságokat.
A |DataDirectory| helyettesítési karakterlánc használata
DataDirectory a AttachDbFileName-vel együtt használatos az adatfájlok relatív elérési útjának jelzésére, lehetővé téve a fejlesztők számára, hogy az adatforrás relatív elérési útján alapuló kapcsolat karakterláncokat hozzanak létre a teljes elérési út megadása helyett.
A fizikai helyszín, amire DataDirectory mutat, azon múlik, hogy milyen típusú az alkalmazás. 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;
Amikor a DataDirectory használatban van, az eredményül kapott fájl elérési útja nem lehet magasabb a könyvtárszerkezetben, mint a helyettesítési karakterlánc által mutatott könyvtár. Ha például a teljes kibontott DataDirectory érték C:\AppDirectory\app_data, akkor a fent látható minta kapcsolati sztring azért 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 nem megfelelően formázott helyettesítési sztringgel rendelkezik, a rendszer egy ArgumentException hibát fog dobni.
Megjegyzés:
Microsoft.Data.SqlClient a helyettesítési sztringeket teljes elérési útvonalakká oldja fel a helyi számítógép fájlrendszerében. 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ó.
Amikor a SqlConnection megnyílik, az alapértelmezett SQL Server Express-példányról egy a hívó fiókjában futó futásidejű példányra irányítja át.
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ódrészlet megnyitja az újat SqlConnection, megjeleníti a kapcsolati sztringet a konzolablakban, majd bezárja a kapcsolatot a using kódblokkból való kilépéskor.
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. Ha a InvalidOperationException hívást egy Open-n hajtják végre, amelynek kapcsolati sztringjében szerepel a SqlConnection, akkor egy User Instance=true kivétel keletkezik.
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ányadatbázisok a AutoClose lehetőség miatt úgy vannak beállí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 tovább fut, így nem kell újraindítani, ha az időkorlát lejárta előtt egy másik kapcsolatot nyitnak meg. 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 szülőpéldány rendszergazdája a felhasználói példányok időtúllépési idejének időtartamát úgy állíthatja be, hogy sp_configure használatával módosítja a felhasználói példány időtúllépési beállítását. Az alapértelmezett érték 60 perc.
Megjegyzés:
Ha a Min Pool Size értéket használja a kapcsolati sztringben, amely nagyobb mint nulla, a kapcsolatkészletező mindig fenntart néhány nyitott kapcsolatot, és a felhasználói példány nem fog automatikusan leállni.
A felhasználói példányok működése
Amikor minden felhasználóhoz első alkalommal hoz létre felhasználói példányt, a rendszer a sablonadatok mappából a felhasználó helyi alkalmazásadattár könyvtárában lévő elérési útra másolja a fő- és msdb-rendszeradatbázisokat a felhasználói példány kizárólagos használatára. Ez az útvonal á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. Az instanciához létrehozott név, amely garantáltan egyedi minden egyes felhasználónak.
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. Miután a felhasználói példányt üzemeltető hívó felhasználó hitelesítő adatait ellenőrizték, az a felhasználó lesz a sysadmin azon a példányon. 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 sztringben 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éldahelyzetek
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 futásidőben 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 forgatókönyvei 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 a .NET Framework 2.0 (vagy újabb) vagy a .NET Core 1.0 (vagy újabb) és az 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 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.