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