API Server imleçler
OLE DB, ODBC ve ADO apı'ları eşleştirme imleçler üzerinde yürütülen SQL deyimleri sonuç kümesi destekler.The Microsoft SQL Server Native Client OLE DB provider and SQL Server Native Client ODBC driver implement these operations through the use of API server cursors.Sunucuda gerçekleştirilen ve API imleç işlevleri tarafından yönetilen imleçleri API sunucu imleçler var.Imleç operasyonun uygulama API imleç işlevlerini çağıran gibi sunucuya ODBC sürücüsünü veya OLE DB sağlayıcı tarafından iletilir.
Kullanırken bir API sunucu imleç OLE DB, ODBC ve ADO, işlevleri veya API için yöntemleri kullanın:
Bir bağlantı açar.
küme öznitelikleri veya API, her sonuç üzerinde otomatik olarak eşler imleç özelliklerini tanımlayan özellikleri küme.
Bir veya daha fazla yürütmek Transact-SQL ifadeler.
API işlevleri veya yöntemler, sonuç kümesindeki satırların getirmek için kullanın.
API imleç öznitelikleri veya özellikleri olduğunda küme için kendi varsayılan küme tings SQL Server Yerel istemci OLE DB sağlayıcı ve SQL Server Yerel istemci ODBC sürücüsü varsayılan sonuç küme s kullanın. Imleci varsayılan özelliklerini, bir imleç için API teknik olarak isteyen, ancak sonuç varsayılan davranışını eşleşen küme.OLE DB sağlayıcı ve ODBC sürücüsü, bu nedenle, varsayılan bir sonuç kullanarak varsayılan imleç seçenekleri uygulamak küme satır sunucudan almak için en etkin yolu olduğundan.Varsayılan sonuç kümesi'ni kullanarak, bir uygulama için yürütmek herhangi Transact-SQL yalnızca bir bekleyen deyim deyim veya toplu iş, ancak bir bağlantıda sahip olabilir. Yani uygulama işlemek ve bunun için önce bir deyim tarafından döndürülen sonuç kümesi'ni iptal yürütmek bağlantı başka bir deyim.
API imleç öznitelikleri veya özellikleri olduğunda küme dışında bir varsayılan değerlerine, SQL Server Yerel istemci OLE DB sağlayıcı ve SQL Server Yerel istemci ODBC sürücüsü varsayılan sonuç küme s yerine API sunucu imleçler kullanın. Her satır getirir, bir API işlev çağrısının API sunucu imleci satırlar getirmek için sunucuya bir geri dönüş oluşturur.
API sunucu imleci kısıtlamaları
Bir uygulama, aþaðýdaki API sunucu imleçler kullanıldığında yürütülemiyor:
Transact-SQL ifadeleri, SQL Server Sunucu imleçler desteklemiyor.
Toplu işlem veya birden çok sonuç kümeleri döndüren saklı yordamlar.
COMPUTE, COMPUTE BY, FOR BROWSE veya INTO yan tümceleri içeren SELECT deyimleri.
uzak saklı yordam başvuran bir yürütmek deyim.
API Server imleç uygulama
The SQL Server Native istemci OLE DB sağlayıcı and SQL Server Native istemci ODBC driver use these special sistem saklı yordamları to signal imleç operations to the server:
Sp_cursoropen imleci imleç seçenekleri ile ilişkilendirilecek SQL deyim tanımlar ve imleci doldurur.
sp_cursorfetch , imleç bir satır veya satır bloğunu getirir.
sp_cursorclose kapatır ve imleç kaldırır.
sp_cursoroption çeşitli imleç seçeneklerini ayarlamak için kullanılır.
sp_cursor konumlandırılmış güncelleştirmeler istemek için kullanılır.
sp_cursorprepare derler.Transact-SQL deyim veya toplu iş yürütme planı olan bir imleç ilişkili, ancak imleç oluşturmaz.
sp_cursorexecute oluşturur ve bir imleç tarafından oluşturulan yürütme planı alanından doldurur.sp_cursorprepare.
sp_cursorunprepare yürütme planından atar.sp_cursorprepare.
sp_cursorprepexec compiles a plan for the submitted Transact-SQL statement or batch associated with a cursor, creates the cursor, and populates it.sp_cursorprepexec combines the behavior of sp_cursorprepare and sp_cursorexecute.
Bu sistem saklı yordamları SQL Server Profiler izlemeler sunucu imleçler API kullanan ADO, OLE DB ve ODBC uygulamalarının görünecektir.Yalnızca iç kullanımı için amaçlanmıştır SQL Server Yerel istemci OLE DB sağlayıcı ve SQL Server Yerel istemci ODBC sürücüsü. Bu yordamlar tüm işlevselliğini uygulamaları Apı'ler veritabanı için imleç işlevi kullanılabilir.Doğrudan bir uygulamada yordamları belirtme desteklenmiyor.
Ne zaman SQL Server bir deyim yürütür ilk deyim tüm sonuçlar işlenen veya iptal kadar bir bağlantı için başka bir deyim bağlantıda çalıştırılabilir. Bu kural, hala API sunucu imleçler kullanıldığında tutan, ancak bu uygulamaya gibi görünüyor SQL Server bir bağlantıda birden çok etkin ifadeleri destekleyen başlatıldı. This is because the full result set is stored in the server cursor and the only statements being transmitted to SQL Server are the executions of the sp_cursor system stored procedures.SQL Server executes the stored procedure, and as soon as the client retrieves the result set it can execute any other statement.OLE DB sağlayıcı ve ODBC sürücüsü her zaman tüm sonuçlar almak bir sp_cursor saklı yordam denetimi uygulamaya döndürmeleri önce.Bu, birden çok etkin sunucu imleçler karşı fetches aralığı uygulamaları sağlar.
Bu tablo, bir uygulamanın aynı anda iki imleçler nasıl işleyebilir gösterir saat iki deyim tanıtıcıları kullanarak bir bağlantı.
Tanıtıcı 1'in Ekstresi |
Tanıtıcı 2'in Ekstresi |
---|---|
küme bir API sunucu imleci kullanılacak şekilde imleç öznitelikleri. |
|
SQLExecDirect bir SQL deyim.ODBC sürücüsü çağrıları Sp_cursoropen ve sonucu alır küme yordam tarafından döndürüldü. |
|
|
küme bir API sunucu imleci kullanılacak şekilde imleç öznitelikleri. |
|
SQLExecDirect bir SQL deyim.ODBC sürücüsü çağrıları Sp_cursoropen ve sonucu alır küme yordam tarafından döndürüldü. |
SQLFetchScroll ilk almak için blok satır.Sürücü çağrıları sp_cursorfetch ve sonra sonucu alır küme yordam tarafından döndürüldü. |
|
|
SQLFetchScroll ilk almak için blok satır.Sürücü çağrıları sp_cursorfetch ve sonra sonucu alır küme yordam tarafından döndürüldü. |
SQLFetchScroll başka bir blokla satır almak için.Sürücü çağrıları sp_cursorfetch ve sonra sonucu alır küme yordam tarafından döndürüldü. |
|
|
SQLFetchScroll başka bir blokla satır almak için.Sürücü çağrıları sp_cursorfetch ve sonra sonucu alır küme yordam tarafından döndürüldü. |
Arama SQLFreeStmt or SQLCloseCursor.Sürücü çağrıları sp_cursorclose. |
|
|
Arama SQLFreeStmt or SQLCloseCursor.Sürücü çağrıları sp_cursorclose. |
Herhangi için çağırdıktan sonra sonuçlar bağlantıda bekleyen kalması nedeniyle bir sp_cursor saklı yordamını, yapabilecekleriniz yürütmek birden çok Transact-SQL ifadeler aynı anda tek bir bağlantıda, bunlar tüm yürütmek d sunucu imleçler API ile sağlanan.
API Server imleçler belirtme
Bir Özet API sunucu imleçler Apı içinde nasıl kullanıldığını aşağıdadır:
OLE DB
Bir oturum nesnesi, bir komut nesnesi ve komut metnini belirtmek.
küme satır kümesi kümesi küme özelliklerini DBPROP_OTHERINSERT, DBPROP_OTHERUPDATEDELETE DBPROP_OWNINSERT, DBPROP_OWNUDPATEDELETE denetim imleç davranışlar.
Komut nesnesi yürütün.
Sonuç satırlarını alması küme IRowküme::GetNextRows IRowkümeLocate::GetRowsAt, IRowkümeLocate::GetRowsAtBookmark ve IRowkümeScroll::GetRowsAtRatio gibi yöntemler kullanarak.
ODBC
Bir bağlantı ve çağrı açın. SQLAllocHandle deyim tanıtıcı ayrılamıyor.
Arama SQLSetStmtAttr SQL_ATTR_CURSOR_TYPE SQL_ATTR_CONCURRENCY ve SQL_ATTR_ROW_ARRAY_SIZE özniteliklerini ayarlamak için.Alternatif olarak, öznitelikleri SQL_ATTR_CURSOR_SCROLLABLE ve SQL_ATTR_CURSOR_SENSITIVITY ayarlayarak da imleç davranışlar belirleyebilirsiniz.
yürütmek bir Transact-SQL deyim kullanarak SQLExecDirect or SQLPrepare and SQLExecute.
Satır veya satırları kullanarak bloklarını Getir SQLFetch or SQLFetchScroll.
ado
Bir Connection nesnesi ve Recordset nesnesi tanımlamak ve sonra da Open yöntem bağlantı nesnesi üzerinde yürütmek.
Recordset nesnesi belirterek Open yöntem yürütmek bir CursorType ve/veya bir LockType Parametre.
Kayıtkümesi Move MoveFirst, MoveLast, MoveNext ve MovePrevious yöntemleri kullanarak satırlarını alması.
API Server işaretçiler ve küme seçenekleri
Içinde SQL Server, bir getirme deyim verilir ve planı etkileyen aşağıdaki seçeneklerden herhangi bir değişiklik veya seçenekler, dizin oluşturulmuş görünümler için gereken veya hesaplanan sütunlar imlecin anlık görüntü görüntü seçenek değerlerini etkin imleç açıldığında kullanır. Bu değerler, tüm sonraki getirme işlemleri için kullanılır ve geçerli içerikteki değişiklikler göz ardı edilir.
Plan etkileyen seçenekleri |
ARITHABORT numeric_roundabort forceplan QUOTED_IDENTIFIER ANSI_NULL_DFLT_OFF ansi_warnings ansi_padding ansi_nulls concat_null_yields_null datefirst dateformat DİL textsize |
Dizin oluşturulmuş görünümler ve hesaplanan sütunlar |
ansi_nulls ansi_padding ansi_warnings (Altında uyumluluk düzeyini 80 veya daha düşük) ARITHABORT CONCAT_NULL_YIELDS_NULL QUOTED_IDENTIFIER numeric_roundabort |