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 lekérdezési értesítéseket használó alkalmazásokra általános követelmények vonatkoznak. Az adatforrást megfelelően kell konfigurálni az SQL-lekérdezési értesítések támogatásához, a felhasználónak pedig a megfelelő ügyféloldali és kiszolgálóoldali engedélyekkel kell rendelkeznie.
A lekérdezési értesítések használatához a következőt kell tennie:
- Lekérdezési értesítések engedélyezése az adatbázishoz.
- Győződjön meg arról, hogy az adatbázishoz való csatlakozáshoz használt felhasználói azonosító rendelkezik a szükséges engedélyekkel.
- Használjon objektumot SqlCommand egy érvényes SELECT utasítás végrehajtásához egy társított értesítési objektummal – vagy SqlDependencySqlNotificationRequest.
- Adjon meg kódot az értesítés feldolgozásához, ha a figyelt adatok módosulnak.
Lekérdezési értesítésekre vonatkozó követelmények
A lekérdezési értesítések csak olyan SELECT-utasítások esetében támogatottak, amelyek megfelelnek az adott követelmények listájának. Az alábbi táblázat a Service Broker és a Lekérdezésértesítések dokumentációra mutató hivatkozásokat tartalmaz az SQL Server Books Online-ban.
AZ SQL Server dokumentációja
- Értesítési lekérdezés létrehozása
- A Service Broker biztonsági szempontjai
- Biztonság és védelem (Service Broker)
- Az értesítési szolgáltatások biztonsági szempontjai
- Lekérdezésértesítési engedélyek
- A Service Broker nemzetközi szempontjai
- Megoldástervezési szempontok (Service Broker)
- Service Broker Developer InfoCenter
- Fejlesztői útmutató (Service Broker)
Lekérdezési értesítések engedélyezése mintakód futtatásához
Ha engedélyezni szeretné a Service Brokert az AdventureWorks-adatbázisban az SQL Server Management Studio használatával, hajtsa végre a következő Transact-SQL utasítást:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
Ahhoz, hogy a lekérdezésértesítési minták megfelelően fussanak, az alábbi Transact-SQL utasításokat kell végrehajtani az adatbázis-kiszolgálón.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Lekérdezési értesítések engedélyei
Az értesítést kérő parancsokat végrehajtó felhasználóknak rendelkezniük kell a SUBSCRIBE QUERY NOTIFICATIONS adatbázis engedélyével a kiszolgálón.
A részleges megbízhatósági környezetben futó ügyféloldali kódhoz a SqlClientPermission.
Az alábbi kód létrehoz egy SqlClientPermission objektumot, és beállítja a PermissionState-t a Unrestricted-re. A Demand rendszer futásidőben kényszerít, SecurityException ha a hívásverem összes magasabb hívója nem kapta meg az engedélyt.
using Microsoft.Data.SqlClient;
using System.Security.Permissions;
class Program
{
static void Main()
{
}
// Code requires directives to
// System.Security.Permissions and
// Microsoft.Data.SqlClient
private bool CanRequestNotifications()
{
SqlClientPermission permission =
new SqlClientPermission(
PermissionState.Unrestricted);
try
{
permission.Demand();
return true;
}
catch (System.Exception)
{
return false;
}
}
}
Értesítési objektum kiválasztása
A lekérdezésértesítési API két objektumot biztosít az értesítések feldolgozásához: SqlDependency és SqlNotificationRequest.
Az SqlDependency használata
A használatához SqlDependencyengedélyezni kell a Service Brokert a használt SQL Server-adatbázishoz, a felhasználóknak pedig engedélyekkel kell rendelkezniük az értesítések fogadásához. A Service Broker-objektumok, például az értesítési üzenetsor előre definiálva vannak.
SqlDependency Emellett automatikusan elindít egy feldolgozói szálat az értesítések feldolgozásához az üzenetsorba való közzétételkor. Emellett elemzi a Service Broker üzenetét is, és eseményargumentum-adatokként adja ki az információkat.
SqlDependency inicializálni kell a Start metódus meghívásával, hogy függőséget hozzon létre az adatbázishoz.
Start egy statikus módszer, amelyet csak egyszer kell meghívni az alkalmazás inicializálása során minden szükséges adatbázis-kapcsolathoz. A Stop metódust az alkalmazás leállításakor kell meghívni minden létrehozott függőségi kapcsolathoz.
Az SqlNotificationRequest használata
Ezzel szemben SqlNotificationRequest a teljes figyelési infrastruktúrát saját maga kell implementálnia. Emellett meg kell határozni az összes, az üzenetsor által támogatott szolgáltatásközvetítő objektumot, például az üzenetsort, a szolgáltatást és az üzenettípust. Ez a manuális megközelítés akkor hasznos, ha az alkalmazás speciális értesítési üzeneteket vagy értesítési viselkedést igényel, vagy ha az alkalmazás egy nagyobb Service Broker-alkalmazás része.