SQL Server-Verbindungspooling (ADO.NET)SQL Server Connection Pooling (ADO.NET)

Beim Herstellen einer Verbindung mit einem Datenbankserver müssen normalerweise mehrere zeitaufwändige Schritte ausgeführt werden.Connecting to a database server typically consists of several time-consuming steps. Es muss u. a. ein physischer Channel (z. B. ein Socket oder eine benannte Pipe) erstellt, der anfängliche Handshake durchgeführt, die Informationen der Verbindungszeichenfolge analysiert, die Verbindung vom Server authentifiziert und Überprüfungen zum Eintragen in die aktuelle Transaktion ausgeführt werden.A physical channel such as a socket or a named pipe must be established, the initial handshake with the server must occur, the connection string information must be parsed, the connection must be authenticated by the server, checks must be run for enlisting in the current transaction, and so on.

In der Praxis verwenden die meisten Anwendungen nur eine oder einige unterschiedliche Konfigurationen für Verbindungen.In practice, most applications use only one or a few different configurations for connections. Dies bedeutet, dass beim Ausführen von Anwendungen viele identische Verbindungen wiederholt geöffnet und geschlossen werden.This means that during application execution, many identical connections will be repeatedly opened and closed. Um die Kosten für das Öffnen von Verbindungen zu minimieren, verwendet ADO.net eine Optimierungstechnik namens Verbindungspooling.To minimize the cost of opening connections, ADO.NET uses an optimization technique called connection pooling.

Beim Verbindungspooling wird die Häufigkeit reduziert, mit der neue Verbindungen hergestellt werden müssen.Connection pooling reduces the number of times that new connections must be opened. Der Pool Funktion behält den Besitz der physischen Verbindung bei.The pooler maintains ownership of the physical connection. Er verwaltet Verbindungen, indem er eine Reihe aktiver Verbindungen für jede angegebene Verbindungskonfiguration beibehält.It manages connections by keeping alive a set of active connections for each given connection configuration. Sobald ein Benutzer Open für eine Verbindung aufruft, sucht der Pooler nach einer verfügbaren Verbindung im Pool.Whenever a user calls Open on a connection, the pooler looks for an available connection in the pool. Wenn eine Verbindung in einem Pool verfügbar ist, gibt der Pooler die Verbindung an den Aufrufer zurück, anstatt eine neue Verbindung herzustellen.If a pooled connection is available, it returns it to the caller instead of opening a new connection. Wenn die Anwendung Close für eine Verbindung aufruft, wird diese vom Pooler an die aktiven Verbindungen im Pool zurückgegeben, anstatt diese zu beenden.When the application calls Close on the connection, the pooler returns it to the pooled set of active connections instead of closing it. Nachdem die Verbindung an den Pool zurückgegeben wurde, kann sie für den nächsten Open-Aufruf erneut verwendet werden.Once the connection is returned to the pool, it is ready to be reused on the next Open call.

Es können nur Verbindungen mit derselben Konfiguration zu einem Pool zusammengefasst werden.Only connections with the same configuration can be pooled. ADO.net behält mehrere Pools gleichzeitig bei, einen für jede Konfiguration.ADO.NET keeps several pools at the same time, one for each configuration. Verbindungen werden durch Verbindungszeichenfolgen sowie bei Verwendung der integrierten Sicherheit durch Windows-Identitäten in Pools unterteilt.Connections are separated into pools by connection string, and by Windows identity when integrated security is used. Verbindungen werden auch auf der Basis ihrer Eintragung in eine Transaktion zu einem Pool zusammengefasst.Connections are also pooled based on whether they are enlisted in a transaction. Bei Verwendung von ChangePassword wirkt sich die SqlCredential-Instanz auf den Verbindungspool aus.When using ChangePassword, the SqlCredential instance affects the connection pool. Verschiedene Instanzen von SqlCredential verwenden verschiedene Verbindungspools, auch wenn die Benutzer-ID und das Kennwort übereinstimmen.Different instances of SqlCredential will use different connection pools, even if the user ID and password are the same.

Durch Verbindungspooling kann die Leistung und Skalierbarkeit einer Anwendung wesentlich erhöht werden.Pooling connections can significantly enhance the performance and scalability of your application. Standardmäßig ist das Verbindungspooling in ADO.NET aktiviert.By default, connection pooling is enabled in ADO.NET. Verbindungen werden beim Öffnen und Schließen in der Anwendung vom Pooler optimiert, außer wenn dies explizit deaktiviert wurde.Unless you explicitly disable it, the pooler optimizes the connections as they are opened and closed in your application. Sie können auch mehrere Modifizierer für Verbindungszeichenfolgen angeben, um das Verhalten des Verbindungspoolings zu steuern.You can also supply several connection string modifiers to control connection pooling behavior. Weitere Informationen hierzu finden Sie weiter unten im Abschnitt "Steuern des Verbindungspoolings mit Schlüsselwörtern für Verbindungszeichenfolgen".For more information, see "Controlling Connection Pooling with Connection String Keywords" later in this topic.

Hinweis

Wenn das Verbindungspooling aktiviert ist und ein Timeout- oder anderer Anmeldefehler auftritt, wird eine Ausnahme ausgelöst, und nachfolgende Verbindungsversuche innerhalb der folgenden fünf Sekunden, der "Sperrfrist", schlagen fehl.When connection pooling is enabled, and if a timeout error or other login error occurs, an exception will be thrown and subsequent connection attempts will fail for the next five seconds, the "blocking period". Wenn die Anwendung versucht, innerhalb der Sperrfrist eine Verbindung herzustellen, wird die erste Ausnahme erneut ausgelöst.If the application attempts to connect within the blocking period, the first exception will be thrown again. Nachfolgende Fehler nach Ende einer Sperrfrist führen zu neuen Sperrfristen, die doppelt so lang sind wie die vorherige Sperrfrist (maximal eine Minute).Subsequent failures after a blocking period ends will result in a new blocking periods that is twice as long as the previous blocking period, up to a maximum of one minute.

Erstellen und Zuweisen von PoolsPool Creation and Assignment

Wenn eine Verbindung erstmals hergestellt wird, wird ein Verbindungspool basierend auf einem exakt übereinstimmenden Algorithmus erstellt. Damit wird der Pool der Verbindungszeichenfolge in der Verbindung zugewiesen.When a connection is first opened, a connection pool is created based on an exact matching algorithm that associates the pool with the connection string in the connection. Jedem Verbindungspool wird eine eindeutige Verbindungszeichenfolge zugeordnet.Each connection pool is associated with a distinct connection string. Wenn beim Öffnen einer neuen Verbindung die Verbindungszeichenfolge nicht genau mit einem vorhanden Pool übereinstimmt, wird ein neuer Pool erstellt.When a new connection is opened, if the connection string is not an exact match to an existing pool, a new pool is created. Verbindungen werden pro Prozess, pro Anwendungsdomäne, pro Verbindungszeichenfolge und bei Verwendung der integrierten Sicherheit pro Windows-Identität in einem Pool zusammengefasst.Connections are pooled per process, per application domain, per connection string and when integrated security is used, per Windows identity. Verbindungszeichenfolgen müssen ebenfalls exakt übereinstimmen. Schlüsselwörter, die für dieselbe Verbindung in einer anderen Reihenfolge bereitgestellt werden, werden in separaten Pools zusammengefasst.Connection strings must also be an exact match; keywords supplied in a different order for the same connection will be pooled separately.

Im folgenden C#-Beispiel werden drei neue SqlConnection-Objekte erstellt. Es sind aber nur zwei Verbindungspools erforderlich, um diese Objekte zu verwalten.In the following C# example, three new SqlConnection objects are created, but only two connection pools are required to manage them. Beachten Sie, dass die erste und zweite Verbindungszeichenfolge sich durch den Wert unterscheiden, der Initial Catalog zugewiesen ist.Note that the first and second connection strings differ by the value assigned for Initial Catalog.

using (SqlConnection connection = new SqlConnection(  
  "Integrated Security=SSPI;Initial Catalog=Northwind"))  
    {  
        connection.Open();        
        // Pool A is created.  
    }  
  
using (SqlConnection connection = new SqlConnection(  
  "Integrated Security=SSPI;Initial Catalog=pubs"))  
    {  
        connection.Open();        
        // Pool B is created because the connection strings differ.  
    }  
  
using (SqlConnection connection = new SqlConnection(  
  "Integrated Security=SSPI;Initial Catalog=Northwind"))  
    {  
        connection.Open();        
        // The connection string matches pool A.  
    }  

Wenn die MinPoolSize nicht in der Verbindungszeichenfolge oder als 0 (null) angegeben ist, wird der Pool nach einer bestimmten Zeit der Inaktivität geschlossen.If MinPoolSize is either not specified in the connection string or is specified as zero, the connections in the pool will be closed after a period of inactivity. Wenn die angegebene MinPoolSize größer als 0 (null) ist, wird der Verbindungspool erst gelöscht, nachdem die AppDomain entladen und der Prozess beendet wurde.However, if the specified MinPoolSize is greater than zero, the connection pool is not destroyed until the AppDomain is unloaded and the process ends. Für die Pflege inaktiver oder leerer Pools ist ein minimaler Systemmehraufwand erforderlich.Maintenance of inactive or empty pools involves minimal system overhead.

Hinweis

Der Pool wird bei schwerwiegenden Fehlern (z. B. einem Failover) automatisch gelöscht.The pool is automatically cleared when a fatal error occurs, such as a failover.

Hinzufügen von VerbindungenAdding Connections

Für jede eindeutige Verbindungszeichenfolge wird ein Verbindungspool erstellt.A connection pool is created for each unique connection string. Wenn ein Pool erstellt wird, werden mehrere Verbindungsobjekte erstellt und dem Pool hinzugefügt wird, sodass die minimalen Anforderungen für die Größe eines Pools erfüllt sind.When a pool is created, multiple connection objects are created and added to the pool so that the minimum pool size requirement is satisfied. Verbindungen werden dem Pool nach Bedarf hinzugefügt, bis die maximale Poolgröße (Standardwert: 100) erreicht ist.Connections are added to the pool as needed, up to the maximum pool size specified (100 is the default). Verbindungen werden wieder für den Pool freigegeben, wenn sie geschlossen oder verworfen werden.Connections are released back into the pool when they are closed or disposed.

Wenn ein SqlConnection-Objekt angefordert wird, wird es aus dem Pool abgerufen, wenn eine verwendbare Verbindung verfügbar ist.When a SqlConnection object is requested, it is obtained from the pool if a usable connection is available. Eine Verbindung ist dann verwendbar, wenn sie nicht verwendet wird, einen übereinstimmenden Transaktionskontext aufweist oder keinem Transaktionskontext zugeordnet ist sowie über eine gültige Verknüpfung zum Server verfügt.To be usable, a connection must be unused, have a matching transaction context or be unassociated with any transaction context, and have a valid link to the server.

Die Verbindungspoolfunktion erfüllt diese Verbindungsanforderungen, indem Verbindungen erneut zugewiesen werden, sobald sie wieder für den Pool freigegeben werden.The connection pooler satisfies requests for connections by reallocating connections as they are released back into the pool. Wenn die maximale Poolgröße erreicht ist und keine verwendbare Verbindung verfügbar ist, wird die Anforderung in die Warteschlange gestellt.If the maximum pool size has been reached and no usable connection is available, the request is queued. Der Pooler versucht anschließend, alle Verbindungen wieder anzufordern, bis das Timeout erreicht ist (der Standardwert beträgt 15 Sekunden).The pooler then tries to reclaim any connections until the time-out is reached (the default is 15 seconds). Wenn der Pooler die Anforderung nicht erfüllt, bevor das Zeitlimit für die Verbindung überschritten ist, wird eine Ausnahme ausgelöst.If the pooler cannot satisfy the request before the connection times out, an exception is thrown.

Achtung

Es ist unbedingt zu empfehlen, die Verbindung nach Verwendung stets zu schließen, damit sie in den Pool zurückgegeben wird.We strongly recommend that you always close the connection when you are finished using it so that the connection will be returned to the pool. Hierzu können Sie entweder Close die-Methode oder Dispose die-Methode des Connection -Objekts verwenden oder alle Verbindungen innerhalb einer using -Anweisung C#in oder eine Using -Anweisung in Visual Basic öffnen.You can do this using either the Close or Dispose methods of the Connection object, or by opening all connections inside a using statement in C#, or a Using statement in Visual Basic. Verbindungen, die nicht explizit geschlossen werden, werden möglicherweise dem Pool nicht hinzugefügt bzw. nicht an den Pool zurückgegeben.Connections that are not explicitly closed might not be added or returned to the pool. Weitere Informationen finden Sie unter using -Anweisung oder Gewusst wie: Löschen Sie eine System Ressource für Visual Basic.For more information, see using Statement or How to: Dispose of a System Resource for Visual Basic.

Hinweis

Rufen Sie nicht Close oder Dispose für eine Connection, einen DataReader oder ein anderes verwaltetes Objekt in der Finalize-Methode der Klasse auf.Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. Geben Sie in einer Finalize-Methode nur nicht verwaltete Ressourcen frei, die der Klasse direkt gehören.In a finalizer, only release unmanaged resources that your class owns directly. Wenn die Klasse keine nicht verwalteten Ressourcen besitzt, definieren Sie in der Klasse keine Finalize-Methode.If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. Weitere Informationen finden Sie unter Garbage Collection.For more information, see Garbage Collection.

Weitere Informationen zu den Ereignissen, die mit dem Öffnen und Schließen von Verbindungen verknüpft sind, finden Sie unter Audit Login Event Class und Audit Logout Event Class in der SQL Server-Dokumentation.For more info about the events associated with opening and closing connections, see Audit Login Event Class and Audit Logout Event Class in the SQL Server documentation.

Entfernen von VerbindungenRemoving Connections

Die Verbindungspoolfunktion entfernt eine Verbindung aus dem Pool, nachdem sie für eine Zeitspanne von etwa 4–8 Minuten nicht verwendet wurde oder wenn festgestellt wird, dass die Verbindung mit dem Server unterbrochen wurde.The connection pooler removes a connection from the pool after it has been idle for approximately 4-8 minutes, or if the pooler detects that the connection with the server has been severed. Beachten Sie, dass eine unterbrochene Verbindung nur nach einem Versuch, mit dem Server zu kommunizieren, festgestellt werden kann.Note that a severed connection can be detected only after attempting to communicate with the server. Wenn eine Verbindung gefunden wird, die nicht mehr mit dem Server verbunden ist, wird sie als ungültig markiert.If a connection is found that is no longer connected to the server, it is marked as invalid. Ungültige Verbindungen werden erst aus dem Verbindungspool entfernt, nachdem sie geschlossen oder freigegeben wurden.Invalid connections are removed from the connection pool only when they are closed or reclaimed.

Wenn eine Verbindung mit einem nicht mehr vorhandenen Server besteht, kann diese Verbindung aus dem Pool genommen werden, ohne dass die Verbindungspoolfunktion die unterbrochene Verbindung gefunden und als ungültig markiert hat.If a connection exists to a server that has disappeared, this connection can be drawn from the pool even if the connection pooler has not detected the severed connection and marked it as invalid. Dies liegt daran, dass durch den Mehraufwand beim Überprüfen, ob eine Verbindung noch gültig ist, die Vorteile eines Poolers umgangen werden, da eine weitere Schleife zum Server auftritt.This is the case because the overhead of checking that the connection is still valid would eliminate the benefits of having a pooler by causing another round trip to the server to occur. In diesem Fall wird bei der ersten Verwendung der Verbindung festgestellt, dass die Verbindung unterbrochen wurde, und es wird eine Ausnahme ausgelöst.When this occurs, the first attempt to use the connection will detect that the connection has been severed, and an exception is thrown.

Löschen des PoolsClearing the Pool

ADO.NET 2,0 hat zwei neue Methoden eingeführt, um den Pool ClearAllPools zu ClearPoollöschen: und.ADO.NET 2.0 introduced two new methods to clear the pool: ClearAllPools and ClearPool. ClearAllPools löscht die Verbindungspools für einen angegebenen Anbieter, und ClearPool löscht den Verbindungspool, der einer bestimmten Verbindung zugeordnet ist.ClearAllPools clears the connection pools for a given provider, and ClearPool clears the connection pool that is associated with a specific connection. Wenn Verbindungen während des Aufrufs verwendet werden, werden diese entsprechend markiert.If there are connections being used at the time of the call, they are marked appropriately. Sie werden nach dem Beenden verworfen und nicht an den Pool zurückgegeben.When they are closed, they are discarded instead of being returned to the pool.

TransaktionsunterstützungTransaction Support

Verbindungen werden aus dem Pool entnommen und basierend auf dem Transaktionskontext zugewiesen.Connections are drawn from the pool and assigned based on transaction context. Sofern Enlist=false in der Verbindungszeichenfolge angegeben ist, wird durch den Verbindungspool gewährleistet, dass die Verbindung im Current-Kontext eingetragen wird.Unless Enlist=false is specified in the connection string, the connection pool makes sure that the connection is enlisted in the Current context. Wenn eine Verbindung geschlossen und mit einer eingetragenen System.Transactions-Transaktion an den Pool zurückgegeben wird, wird sie so reserviert, dass bei der nächsten Anforderung für diesen Verbindungspool mit der gleichen System.Transactions-Transaktion die gleiche Verbindung zurückgegeben wird, soweit diese verfügbar ist.When a connection is closed and returned to the pool with an enlisted System.Transactions transaction, it is set aside in such a way that the next request for that connection pool with the same System.Transactions transaction will return the same connection if it is available. Wenn eine solche Anforderung ausgegeben wird und keine Verbindungen in einem Pool verfügbar sind, wird eine Verbindung vom nicht transaktiven Teil des Pools erstellt und eingetragen.If such a request is issued, and there are no pooled connections available, a connection is drawn from the non-transacted part of the pool and enlisted. Wenn in keinem Bereich des Pools Verbindungen verfügbar sind, wird eine neue Verbindung erstellt und eingetragen.If no connections are available in either area of the pool, a new connection is created and enlisted.

Wenn eine Verbindung geschlossen wird, wird sie an den Pool und an den entsprechenden Teilbereich auf der Grundlage des Transaktionskontexts zurückgegeben.When a connection is closed, it is released back into the pool and into the appropriate subdivision based on its transaction context. Sie können die Verbindung daher trennen, ohne einen Fehler zu generieren, auch wenn eine verteilte Transaktion noch aussteht.Therefore, you can close the connection without generating an error, even though a distributed transaction is still pending. So haben Sie die Möglichkeit, die verteilte Transaktion zu einem späteren Zeitpunkt durchzuführen oder abzubrechen.This allows you to commit or abort the distributed transaction later.

Steuern von Verbindungspooling mit Verbindungszeichenfolgen-SchlüsselwörternControlling Connection Pooling with Connection String Keywords

Die ConnectionString-Eigenschaft des SqlConnection-Objekts unterstützt Schlüssel-Wert-Paare für Verbindungszeichenfolgen, mit denen das Verhalten der Verbindungspoolinglogik angepasst werden kann.The ConnectionString property of the SqlConnection object supports connection string key/value pairs that can be used to adjust the behavior of the connection pooling logic. Weitere Informationen finden Sie unter ConnectionString.For more information, see ConnectionString.

PoolfragmentierungPool Fragmentation

Poolfragmentierung ist ein Problem, das häufig bei Webanwendungen auftritt, bei denen die Anwendung eine große Anzahl von Pools erstellen kann, die erst nach der Beendigung des Prozesses freigegeben werden.Pool fragmentation is a common problem in many Web applications where the application can create a large number of pools that are not freed until the process exits. Dabei bleibt eine große Anzahl von Verbindungen geöffnet. Dies benötigt viel Speicherplatz und verringert die Leistung.This leaves a large number of connections open and consuming memory, which results in poor performance.

Poolfragmentierung aufgrund der integrierten SicherheitPool Fragmentation Due to Integrated Security

Verbindungen werden entsprechend der Verbindungszeichenfolge und der Benutzeridentität zu Pools zusammengefasst.Connections are pooled according to the connection string plus the user identity. Daher erhalten Sie einen Pool pro Benutzer, wenn Sie für die Website die Standardauthentifizierung oder die Windows-Authentifizierung und eine Anmeldung mit integrierter Sicherheit verwenden.Therefore, if you use Basic authentication or Windows Authentication on the Web site and an integrated security login, you get one pool per user. Obwohl dadurch die Leistungsfähigkeit nachfolgender Datenbankanforderungen für einen einzelnen Benutzer verbessert wird, kann der Benutzer von anderen Benutzern hergestellte Verbindungen nicht nutzen.Although this improves the performance of subsequent database requests for a single user, that user cannot take advantage of connections made by other users. Folglich wird pro Benutzer mindestens eine Verbindung mit dem Datenbankserver hergestellt.It also results in at least one connection per user to the database server. Dies ist ein Nebeneffekt einer bestimmten Webanwendungsarchitektur, den Entwickler gegen Sicherheits- und Überwachungsanforderungen abwägen müssen.This is a side effect of a particular Web application architecture that developers must weigh against security and auditing requirements.

Poolfragmentierung aufgrund vieler DatenbankenPool Fragmentation Due to Many Databases

Viele Internetdienstanbieter hosten mehrere Websites auf einem einzigen Server.Many Internet service providers host several Web sites on a single server. Sie verwenden u. U. eine einzige Datenbank, um eine Anmeldung mit Forms-Authentifizierung zu bestätigen, und stellen anschließend für diesen Benutzer oder diese Gruppe von Benutzern eine Verbindung mit einer bestimmten Datenbank her.They may use a single database to confirm a Forms authentication login and then open a connection to a specific database for that user or group of users. Die Verbindung mit der Authentifizierungsdatenbank wird zu einem Pool zusammengefasst und kann von allen Benutzern verwendet werden.The connection to the authentication database is pooled and used by everyone. Es besteht jedoch für jede Datenbank ein eigener Verbindungspool, wodurch die Anzahl von Verbindungen mit dem Server erhöht wird.However, there is a separate pool of connections to each database, which increase the number of connections to the server.

Dies ist auch ein Nebeneffekt des Anwendungsentwurfs.This is also a side-effect of the application design. Dieser Nebeneffekt kann relativ einfach vermieden werden, ohne dabei die Sicherheit beim Herstellen einer Verbindung mit SQL Server zu beeinträchtigen.There is a relatively simple way to avoid this side effect without compromising security when you connect to SQL Server. Stellen Sie keine Verbindung mit einer separaten Datenbank für jeden Benutzer oder jede Gruppe her, sondern stellen Sie eine Verbindung mit derselben Datenbank auf dem Server her, und führen Sie anschließend die Transact-SQL-Anweisung USE aus, um zur gewünschten Datenbank zu wechseln.Instead of connecting to a separate database for each user or group, connect to the same database on the server and then execute the Transact-SQL USE statement to change to the desired database. Im folgenden Codefragment wird das Herstellen einer Anfangsverbindung mit der master-Datenbank und der anschließende Wechsel zur gewünschten Datenbank in der databaseName-Zeichenfolgenvariable veranschaulicht.The following code fragment demonstrates creating an initial connection to the master database and then switching to the desired database specified in the databaseName string variable.

' Assumes that command is a valid SqlCommand object and that  
' connectionString connects to master.  
    command.Text = "USE DatabaseName"  
Using connection As New SqlConnection(connectionString)  
    connection.Open()  
    command.ExecuteNonQuery()  
End Using  
// Assumes that command is a SqlCommand object and that  
// connectionString connects to master.  
command.Text = "USE DatabaseName";  
using (SqlConnection connection = new SqlConnection(  
  connectionString))  
  {  
    connection.Open();  
    command.ExecuteNonQuery();  
  }  

Anwendungsrollen und VerbindungspoolingApplication Roles and Connection Pooling

Nachdem eine Anwendungsrolle von SQL Server durch Aufrufen der im System gespeicherten Prozedur sp_setapprole aktiviert wurde, kann der Sicherheitskontext dieser Verbindung nicht zurückgesetzt werden.After a SQL Server application role has been activated by calling the sp_setapprole system stored procedure, the security context of that connection cannot be reset. Wenn jedoch das Verbindungspooling aktiviert ist, wird die Verbindung an den Verbindungspool zurückgegeben. Bei der erneuten Verwendung der an den Pool zurückgegebenen Verbindung wird dann ein Fehler ausgelöst.However, if pooling is enabled, the connection is returned to the pool, and an error occurs when the pooled connection is reused. Weitere Informationen finden Sie im Knowledge Base-Artikel "SQL-Anwendungs Rollen Fehler mit OLE DB Ressourcen Pooling".For more information, see the Knowledge Base article, "SQL application role errors with OLE DB resource pooling."

Alternativen zu AnwendungsrollenApplication Role Alternatives

Es wird empfohlen, die Sicherheitsmechanismen zu nutzen, die anstelle der Anwendungsrollen verwendet werden können.We recommend that you take advantage of security mechanisms that you can use instead of application roles. Weitere Informationen finden Sie unter Erstellen von Anwendungs Rollen in SQL Server.For more information, see Creating Application Roles in SQL Server.

Siehe auchSee also