Aracılığıyla paylaş


Iletileri Generate, ekstrelerini işleniyor

The Transact-SQL SET statement options STATISTICS TIME and STATISTICS IO are used to get information that aids in diagnosing long-running queries.Önceki sürümleriSQL ServerAyrıca çözümleniyor için gösterim planı seçeneğini destekler.. sorgu planlarıBir ODBC uygulaması için küme aşağıdaki yürütme olarak bu seçenekleri:

SQLExecDirect(hstmt, "SET SHOWPLAN ON", SQL_NTS);
SQLExecDirect(hstmt, "SET STATISTICS TIME ON", SQL_NTS90
);
SQLExecDirect(hstmt, "SET STATISTICS IO ON", SQL_NTS);

Olan, küme STATISTICS saat ya da küme gösterim planı ON,SQLExecute ve SQLExecDirect SQL_SUCCESS_WITH_INFO geri dönün ve bu noktada uygulama, dönünceye kadar SQL_NO_DATA. SQLGetDiagRec çağırarak gösterim planı veya STATISTICS saat çıkış alabilirsiniz Her satırı gösterim planı veri biçiminde gelir:

szSqlState="01000", *pfNativeError=6223,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server] 
              Table Scan"

SQL Server sürüm 7.0 SHOWPLAN_ALL SHOWPLAN_TEXT ile gösterim planı seçeneği yerine, her biri iade olarak çıktı bir sonuç kümesi, iletileri kümesi değil.

Her satırı STATISTICS saat biçiminde gelir:

szSqlState="01000", *pfNativeError= 3613,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
   SQL Server Parse and Compile Time: cpu time = 0 ms."

küme STATISTICS GÇ çıktısını bir sonuç kümesinin sonuna kadar kullanılamaz.Uygulama çağrıları STATISTICS g/Ç çıktı almaSQLGetDiagRec saat SQLFetch veya SQLFetchScrollverir SQL_NO_DATA.STATISTICS g/Ç çıkışını biçiminde gelir:

szSqlState="01000", *pfNativeError= 3615,
szErrorMsg="[Microsoft][ SQL Server Native Client][SQL Server]
   Table: testshow  scan count 1,  logical reads: 1,
   physical reads: 0."

DBCC ifadeleri kullanma

DBCC ifadeleri verilerine iletileri, sonuç kümesi olarak döndürür.SQLExecDirect veya SQLExecute SQL_SUCCESS_WITH_INFO geri dönün ve uygulama, dönünceye kadar SQL_NO_DATA. SQLGetDiagRec çağırarak çıktı alır.

Örneğin, aşağıdaki ifadeyi SQL_SUCCESS_WITH_INFO verir:

SQLExecDirect(hstmt, "DBCC CHECKTABLE(Authors)", SQL_NTS);

ÇağrıSQLGetDiagRec return:

szSqlState = "01000", *pfNativeError = 2536,
szErrorMsg="[Microsoft][ SQL Server Native Client][SQL Server]
   Checking authors"
szSqlState = "01000", *pfNativeError = 2579,
szErrorMsg="[Microsoft][ SQL Server Native Client][SQL Server]
   The total number of data pages in this table is 1."
szSqlState = "01000", *pfNativeError = 7929,
szErrorMsg="[Microsoft][ SQL Server Native Client][SQL Server]
   Table has 23 data rows."
szSqlState = "01000", *pfNativeError = 2528
szErrorMsg="[Microsoft][ SQL Server Native Client][SQL Server]
   DBCC execution completed. If DBCC printed error messages,
   see your System Administrator."

Transact-SQLPRINT ve RAISERROR deyimi de geri çağırarak verileriSQLGetDiagRec.PRINT geri SQL_SUCCESS_WITH_INFO ve bir sonraki çağrı SQL deyim yürütme nedenSQLGetDiagRec Sayı bir SQLState 01000,. Yaklaşık on veya daha düşük bir önem ile bir RAISERROR PRINT aynı şekilde davranır.11 Veya yüksek önem derecesi ile bir RAISERROR neden geri SQL_ERROR ve bir sonraki çağrı yürütmekSQLGetDiagRec sayı 42000 SQLState . Örneğin, aşağıdaki ifadeyi SQL_SUCCESS_WITH_INFO verir:

SQLExecDirect (hstmt, "PRINT  'Some message' ", SQL_NTS);

AramaSQLGetDiagRec verir:

szSQLState = "01000", *pfNative Error = 0,
szErrorMsg= "[Microsoft] [SQL Server Native Client][SQL Server]
   Some message"

Aşağıdaki deyim SQL_SUCCESS_WITH_INFO verir:

SQLExecDirect (hstmt, "RAISERROR ('Sample error 1.', 10, -1)",
   SQL_NTS)

AramaSQLGetDiagRec verir:

szSQLState = "01000", *pfNative Error = 50000,
szErrorMsg= "[Microsoft] [SQL Server Native Client][SQL Server]
   Sample error 1."

Aşağıdaki deyim SQL_ERROR verir:

SQLExecDirect (hstmt, "RAISERROR ('Sample error 2.', 11, -1)", SQL_NTS)

AramaSQLGetDiagRec verir:

szSQLState = "42000", *pfNative Error = 50000,
szErrorMsg= "[Microsoft] [SQL Server Native Client][SQL Server]
   Sample error 2."

Arama zamanlamasıSQLGetDiagRec bir sonuç çıktısı PRINT veya RAISERROR deyimi yer aldığında kritik küme.ÇağrıSQLGetDiagRec PRINT veya RAISERROR çıktı almak için hemen alır SQL_ERROR veya SQL_SUCCESS_WITH_INFO. ifadenin yapılmalıdır. Yalnızca tek bir SQL deyim yürütüldüğünde olarak Yukarıdaki örneklerde, bu açıktır.Bu durumda, çağrıSQLExecDirectSQLExecute verir SQL_ERROR, SQL_SUCCESS_WITH_INFO ve SQLGetDiagRec daha sonra adlı.Döngü çıktısını SQL deyimlerini, toplu iş iş işleme için kodlama veya yürütme daha basitSQL Serversaklı yordamlar.

Bu durumda,SQL Serverbir sonuç döndüreceği küme için bir toplu iş iş iş veya saklı yordamı. yürütülen her deyimnintoplu iş iş iş veya yordamı varsa PRINT veya RAISERROR deyim çıktı bunlar için SELECT deyiminin sonuç kümeleri ile araya eklenmiş.Bir PRINT veya RAISERROR, ilk deyim, toplu iş iş iş veya yordamı,SQLExecute veya SQLExecDirect SQL_SUCCESS_WITH_INFO ya da SQL_ERROR verir ve uygulama, yazdırma almak için SQL_NO_DATA dönünceye kadar SQLGetDiagRec veya RAISERROR bilgi gerekiyor

If the PRINT or RAISERROR statement comes after an SQL statement (such as a SELECT statement), then the PRINT or RAISERROR information is returned when SQLMoreResultspositions on the result set containing the error.SQLMoreResults SQL_SUCCESS_WITH_INFO ya da SQL_ERROR önem bağlı ileti. verir İletileri çağırarak alınırSQLGetDiagRec Bu sayı kadar SQL_NO_DATA.

See Also

Concepts