كار كردن با نوع Xml در linked server
هنگام كار كردن با Linked Server اگر جدول شما شامل ستوني از جنس Xml باشه كوئري زير
SELECT T.ID , T.Name FROM [10.0.1.3].RemoteDatabase.[dbo].[Tbl_Person_Remote] AS T INNER JOIN LocalDatabase.[dbo].[Tbl_Person_Local] ON T.ID = LocalDatabase.[dbo].[Tbl_Person_Local].ID
Xml data type is not supported in distributed queries.
براي رفع اين مشكل 2 راه وجود داره
1-ساختن يك View در سرور ريموت كه شامل اون ستون Xml نباشه
2-استفاده از تابع OPENQUERY
SELECT T.ID , T.NAME FROM OPENQUERY([10.0.1.3] , 'SELECT T.ID ,T.Name FROM RemoteDatabase.[dbo].[Tbl_Person_Remote]') AS T INNER JOIN LocalDatabase.[dbo].[Tbl_Person_Local] ON T.ID = LocalDatabase.[dbo].[Tbl_Person_Local].ID
توجه كنيد من تو Select ام اون ستوني رو كه از جنس Xml هست ندارم در صورت نياز بايد اون ستون رو Cast يا Convert كنيد به NVARCHAR(max)
مشكل ديگه اي كه ممكنه تو كوئري هاي از اين دست به اون بر بخوريد (Distributed Queries) يكي نبودن و يا تداخل Collations هاي سرور ريموت و لوكاله
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "SQL_Latin1_General_CP1256_CI_AS" in the equal to operation.
براي رفع اون داخل Select مون به صورت صريح Collation رو مشخص ميكنيم با دستور COLLATE
سلام
پاسخحذفاین کار شما مشکل select گرفتن از سرور remote رو حل میکنه
حال فرض کن می خوایم روی جدول تغییر بدیم.مثلا یک رکورد درج کنیم
اینجارو می خوای چیکار کنید؟
ستون xml داخل view رو که حذف کردی
اگرم بیاریش مجبوری به nvarchar(max) کانورتش کنی
حالا درج یک روکورد تو سرور remote روی یک جدولی که ستون xml داره و می خوای پرش کنی چی میشه؟
ممنون میشم اگه راهنمای کنید
shabani_salar@yahoo.com