共用方式為


擴充 SQL-DMO 物件的程式設計

下一版的 Microsoft SQL Server 將不再提供此功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

Microsoft SQL Server 2000 中的 SQL 分散式管理物件 (SQL-DMO) 提供許多不與舊版相容的新物件。這些物件大部分是以 ObjectName2 格式命名,並可擴充以類似方式命名並受 SQL Server 7.0 版支援之物件的功能。例如,UserDefinedDataType2 物件會藉由公開 Collation 屬性來擴充 UserDefinedDataType 物件的功能。UserDefinedDataType2 之類的物件會繼承其基底物件的方法和屬性。因此,應用程式永遠都可使用 UserDefinedDataType2 物件來呼叫 UserDefinedDataType 物件的方法和屬性。

沒有必要修改現有的 SQL Server 7.0 應用程式,因為這些應用程式並不會參考在 SQL Server 2000 和更新版本中公開的新物件、方法和屬性。

使用 C++ 搭配擴充 SQL-DMO 物件

如果應用程式只用於 SQL Server 2000 和更新版本的執行個體,則使用新增 SQL-DMO 物件的 C++ 應用程式並不需要採取任何額外的程式設計步驟。不過,使用新增 SQL-DMO 物件且同時搭配 SQL Server 7.0 使用的 C++ 應用程式如果嘗試使用新物件,就會發生錯誤。因此,應用程式必須呼叫 IUnknown::QueryInterface 方法,將 ObjectName2 物件搭配其繼承來源的相關物件使用,並藉此順利處理錯誤。

這些範例示範如何使用 UserDefinedDataType2 物件的 Collation 屬性來使用 ObjectName2 物件。第一個範例示範搭配 SQL Server 2000 和更新版本執行之應用程式中的使用方式。第二個範例示範也可以搭配 SQL Server 7.0 執行之應用程式中的使用方式。

範例

參考 SQL Server 2000 和更新版本的擴充 SQL-DMO 物件

//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.

參考 SQL Server 7.0 的擴充 SQL-DMO 物件

// 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.

使用 Visual Basic 搭配擴充 SQL-DMO 物件

如果應用程式只用於 Microsoft SQL Server 2000 和更新版本,則使用新增 SQL-DMO 物件的 Visual Basic 應用程式並不需要採取任何額外的程式設計步驟。使用晚期繫結的 Visual Basic 應用程式並不需要任何額外的步驟。不過,使用早期繫結的 Visual Basic 應用程式在設定 ObjectName2 物件變數時,則必須很精確。例如,在此程式碼範例中,StoredProcedures.Item 方法會傳回 StoredProcedure 物件,而不是 StoredProcedure2 物件:

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

不過,藉由使用這種方式,StoredProcedures.Item 方法會呼叫 StoredProcedure2 物件的 IUnknown::QueryInterface 方法:

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