Udostępnij za pośrednictwem


Programowanie Extended obiektów SQL-DMO

Ta funkcja zostanie usunięta z następnej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

SQL Distributed Management Objects (SQL-DMO) w Microsoft SQL Server 2000 promowanie liczba nowych obiektów, które nie były zgodne z wcześniejszych wersji.Większość tych obiektów są o nazwie w postaci ObjectName2, i rozszerzyć funkcje obsługiwane przez program SQL Server wersja 7.0 podobnie nazwanych obiektów.Na przykład UserDefinedDataType2 obiektu rozszerza funkcjonalność UserDefinedDataType obiektu ekspozycję Collation właściwość.Obiekty takie jak UserDefinedDataType2 dziedziczą metod i właściwości ich obiektów podstawowych.Dlatego zawsze można użyć aplikacji UserDefinedDataType2 obiektu wywoływanie metod i właściwości UserDefinedDataType obiektu.

Nie jest konieczne modyfikowanie istniejących aplikacji programu SQL Server 7.0, ponieważ nie odwołania nowych obiektów, metod i właściwości udostępniane w programie SQL Server 2000 i nowszych.

Przy użyciu języka C++ z rozszerzonych obiektów SQL-DMO

Aplikacji C++, które korzystają z nowych obiektów SQL-DMO nie trzeba podjąć kroki dodatkowe programowych, jeśli aplikacji będzie używany tylko z wystąpieniami programu SQL Server 2000 i nowszych.Jednak aplikacje C++ użyć nowych obiektów SQL-DMO i są używane z programem SQL Server 7.0 wystąpi błąd w przypadku próby użycia nowego obiektu.Dlatego aplikacja musi wywołać IUnknown::QueryInterface metoda ObjectName2 obiekt z powiązanych obiektu, z której dziedziczy i łagodnie obsługi błędów.

Następujące przykłady przedstawiają sposób zastosowania ObjectName2 obiektów za pomocą Collation Właściwość UserDefinedDataType2 obiektu.Pierwszy przykład demonstruje użycie w aplikacji, która jest uruchamiana z programu SQL Server 2000 lub nowszym.W drugim przykładzie zademonstrowano sposób użycia w aplikacji, która może również uruchomić programu SQL Server 7.0.

Przykłady

Odwoływanie się do rozszerzonej obiektów SQL-DMO programu SQL Server 2000 i później

//Define variable.
LPSQLDMOUSERDEFINEDDATATYPE2 oUDDT2 = NULL;

// Do CoCreate Instance for UserDefinedDataType.
CoCreateInstance(CLSID_SQLDMOUserDefinedDataType, NULL, CLSCTX_INPROC_SERVER, IID_ISQLDMOUserDefinedDataType2, (LPVOID*) &oUDDT2))

oUDDT2->SetCollation(L"German_Phonebook_CI_AI_KI_WI");

// Now add the UserDefinedDataType object to the UserDefinedDataTypes // collection.

Odwoływanie się do rozszerzonej obiektów SQL-DMO programu SQL Server 7.0

// Define variables.
LPSQLDMOUSERDEFINEDDATATYPE oUDDT = NULL;
LPSQLDMOUSERDEFINEDDATATYPE2 oUDDT2 = NULL;
HRESULT hr;

// Do CoCreate Instance for UserDefinedDataType.
CoCreateInstance(CLSID_SQLDMOUserDefinedDataType2, NULL, CLSCTX_INPROC_SERVER, IID_ISQLDMOUserDefinedDataType, (LPVOID*) &oUDDT))

// QueryInterface UserDefinedDataType2.
// Gracefully handle error situations arising from use with version // 7.0.
hr=oUDDT->QueryInterface(IID_ISQLDMOUserDefinedDatatype2,&oUDDT2);
if (SUCCEEDED(hr))
oUDDT2->SetCollation(L"German_Phonebook_CI_AI_KI_WI");
else
// oUDDT2 is not supported. Perform error handling routine.

// Now add the UserDefinedDataType object to the UserDefinedDataTypes // collection.

Używając języka Visual Basic z rozszerzonych obiektów SQL-DMO

Aplikacji Visual Basic, które korzystają z nowych obiektów SQL-DMO nie trzeba podjąć kroki dodatkowe programowych, jeśli aplikacja ma być używany tylko z Microsoft SQL Server 2000 lub nowszym.Żadne dodatkowe czynności są wymagane dla aplikacji Visual Basic, korzystających z opóźnieniem powiązanie.Jednak aplikacji Visual Basic, użyć wczesnego powiązanie muszą być precyzyjne ustawienie ObjectName2 zmienna obiektu.Na przykład, w tym przykładzie kodu StoredProcedures.Item Metoda zwraca StoredProcedure obiekt, nie obiektu StoredProcedure2:

Dim oSQLSvr2 as New SQLServer2
oSQLSvr2.Connect "Myserver","sa",""
MsgBox oSQLSrv2.Databases("northwind").StoredProcedures(1).Name

Jednak w ten sposób StoredProcedures.Item wywołania metoda IUnknown::QueryInterface metoda StoredProcedure2 obiekt:

Dim oStoredProc2 as SQLDMO.StoredProcedure2
Set oStoredProc2 = oSQLSrv2.Databases("northwind").StoredProcedures(1)
oStoredProc2.IsDeleted