جهت بروز کردن یک لایه با تغییرات همان لایه در سروری دیگر (حذف – ایجاد – ویرایش هر رکورد)
ابتدا لایه مورد نظر از طریق فرم ویرایش لایه های نقشه ایجاد شود
LayerID : شناسه یکتا لایه های نقشه سامانشهر
IsActive : فعال/غیرفعال کردن لایه در صورت 0 بودن لایه در منوی لیست لایه های نقشه نمایش داده نمیشود.
isMainLayer : لایه های مرتبط با محتوای کد نوسازی
ActiveSync : فعال کردن لایه برای سینک اطلاعات با سرور دیگر
SyncDate: تاریخ آخرین سیک لایه در صورت فعال بودن سینک در صورت NULL بود تمامی اطلاعات لایه مبدا منتقل می شود و تاریخ اخرین سینک بعد از اولین سینک بروز می شود
بعد از فعال شدن ActiveSync اطلاعت لایه مورد نظر و لایه سرور مبدا در جدول MapSyncSetting وارد شود.
در لایه مبدا جهت برقراری سینک نیاز هست جدول مورد نظر ستون هایی جهت ثبت تاریخ ایجاد هر ردیف و ویرایش هر ردیف نیاز هست که نام این ستون ها در جدول تنظیمات سینک وارد می شود تا بر اساس آنها اخرین ردیف های ایجاد شده یا ویرایش شده نسبت به تاریخ اخرین تاریخ سینک بازیابی شوند و سینک اطلاعت تکمیل شود
جدول تنظیمات :
MapSyncSetting : جهت ذخیره اطلاعات مربوط به سینک اطلاعاتی هر لایه
GISLinkedServerName : نام لینک سرور دیتابیس مبدا
GISDataBaseName : نام دیتابیس سرور مبدا که لایه مبدا در آن قرار دارد
GISCodeColumn : نام ستون اطلاعاتی مورد نظر جهت انتقال اطلاعات آن ستون
GISKeyColumn : نام ستون شناسه یکتا جدول مبدا جهت برقراری لینک ارتباط با ردیف مورد نظر در سرور مقصد
GISLayerName : نام جدول مبدا شامل اطلاعات مکانی مورد نظر جهت سینک
GISLastEditColumn : نام ستون تاریخ ویرایش جدول مبدا
GISLabelTextColumn : نام ستوت اطلاعات سرور مبدا که به اطلاعت سینک شده به شکل برچسب در نقشه سامانشهر نمایش داده می شود (در صورتی که تنظیمات نمایش برچست در فرم ویرایش لایه اعمال شده باشد)
جدول LayerSyncLog : جهت ذخیره لاگ مرببوط به سینک اطلاعات
استور پروسیجر های مورد استفاده:
GetOnlineChanges : با توجه با اطلاعات جدول MapSyncSetting مقادیر از سرور مقصد دریافت می شود.
GetOnlineRenovationMapprice : فقط برای لایه قیمت نوسازی به صورت اختصاصی
SyncedDeletedShapeInfoForSp : جهت سینک حذف شده ها در سرور مقصد
SyncMapData : اصلی جهت سینک و بروزرسازی جدول ShapeInfo که به صورت تعریف جاب در دیتابیس اجرا میشود و به صورت دستی برای یک لایه خاص.
پاسخ ها ( 2 )
جهت بروز کردن یک لایه با تغییرات همان لایه در سروری دیگر (حذف – ایجاد – ویرایش هر رکورد)
ابتدا لایه مورد نظر از طریق فرم ویرایش لایه های نقشه ایجاد شود
LayerID : شناسه یکتا لایه های نقشه سامانشهر
IsActive : فعال/غیرفعال کردن لایه در صورت 0 بودن لایه در منوی لیست لایه های نقشه نمایش داده نمیشود.
isMainLayer : لایه های مرتبط با محتوای کد نوسازی
ActiveSync : فعال کردن لایه برای سینک اطلاعات با سرور دیگر
SyncDate: تاریخ آخرین سیک لایه در صورت فعال بودن سینک در صورت NULL بود تمامی اطلاعات لایه مبدا منتقل می شود و تاریخ اخرین سینک بعد از اولین سینک بروز می شود
بعد از فعال شدن ActiveSync اطلاعت لایه مورد نظر و لایه سرور مبدا در جدول MapSyncSetting وارد شود.
در لایه مبدا جهت برقراری سینک نیاز هست جدول مورد نظر ستون هایی جهت ثبت تاریخ ایجاد هر ردیف و ویرایش هر ردیف نیاز هست که نام این ستون ها در جدول تنظیمات سینک وارد می شود تا بر اساس آنها اخرین ردیف های ایجاد شده یا ویرایش شده نسبت به تاریخ اخرین تاریخ سینک بازیابی شوند و سینک اطلاعت تکمیل شود
جدول تنظیمات :
MapSyncSetting : جهت ذخیره اطلاعات مربوط به سینک اطلاعاتی هر لایه
GISLinkedServerName : نام لینک سرور دیتابیس مبدا
GISDataBaseName : نام دیتابیس سرور مبدا که لایه مبدا در آن قرار دارد
GISCodeColumn : نام ستون اطلاعاتی مورد نظر جهت انتقال اطلاعات آن ستون
GISKeyColumn : نام ستون شناسه یکتا جدول مبدا جهت برقراری لینک ارتباط با ردیف مورد نظر در سرور مقصد
GISLayerName : نام جدول مبدا شامل اطلاعات مکانی مورد نظر جهت سینک
GISLastEditColumn : نام ستون تاریخ ویرایش جدول مبدا
GISCreateColumn : نام ستون تاریخ ایجاد جدول مبدا
SamanLayerId : شناسه یکتا لایه سرور مقصد(سامانشهر)ستون LayerID از جدول LayerInfo
isActive : فعال و غیر فعال شدن سینک ردیف مورد نظر
GISLabelTextColumn : نام ستوت اطلاعات سرور مبدا که به اطلاعت سینک شده به شکل برچسب در نقشه سامانشهر نمایش داده می شود (در صورتی که تنظیمات نمایش برچست در فرم ویرایش لایه اعمال شده باشد)
جدول LayerSyncLog : جهت ذخیره لاگ مرببوط به سینک اطلاعات
استور پروسیجر های مورد استفاده:
GetOnlineChanges : با توجه با اطلاعات جدول MapSyncSetting مقادیر از سرور مقصد دریافت می شود.
GetOnlineRenovationMapprice : فقط برای لایه قیمت نوسازی به صورت اختصاصی
SyncedDeletedShapeInfoForSp : جهت سینک حذف شده ها در سرور مقصد
SyncMapData : اصلی جهت سینک و بروزرسازی جدول ShapeInfo که به صورت تعریف جاب در دیتابیس اجرا میشود و به صورت دستی برای یک لایه خاص.
فایل پیوست
از اسکریپت ذیل می توانید استفاده کنید :
USE [DbMap]
GO
— کنترل اس دی ای
select top 100 * from OpenQuery([172.16.10.53ARAKFAVAGIS],’select * from [ARAKGIS].[sde].[KP1402_ON_PARCEL_V2]’)
— مقادیر را کامل کنید
declare @LayerID int = 575012 — کد لایه
,@Field1 nvarchar(200) = ‘[172.16.10.53ARAKFAVAGIS]’ — سرور اس دی ای
,@Field2 nvarchar(200) = ‘ARAKGIS’ — دیتابیس اس دی ای
,@Field3 nvarchar(200) = ”’Y = 1402”+”| P = ”+cast(P as nvarchar(400))+”| K = ”+cast(K as nvarchar(400))’ — فیلد اصلی داده
,@Field4 nvarchar(200) = ‘OBJECTID_12’ — اولین ستون تیبل اس دی ای
,@Field5 nvarchar(200) = ‘sde.KP1402_ON_PARCEL_V2’ — نام تیبل اس دی ای
,@Field6 nvarchar(200) = ‘last_edite’ — نام ستون تاریخ ادیت
,@Field7 nvarchar(200) = ‘created_da’ — نام ستون تاریخ ایجاد
,@Field8 nvarchar(200) = ”’Y = 1402”+”| P = ”+cast(P as nvarchar(400))+”| K = ”+cast(K as nvarchar(400))’ — فیلد لیبل
— قدم اول فعال کردن اکتیو سینک لایه
select LayerCaption,LayerID,ActiveSync from LayerInfo where LayerID = @LayerID
update LayerInfo set ActiveSync = 1 where LayerID = @LayerID
— قدم دوم اضافه شدن رکورد به تیبل مپ سینک ستینگ
ifnotexists(select*from MapSyncSetting where SamanLayerId = @LayerID)
INSERT INTO [dbo].[MapSyncSetting] ([GISLinkedServerName],[GISDataBaseName],[GISCodeColumn],[GISKeyColumn],[GISLayerName],[GISLastEditColumn],[GISCreateColumn],[GISLabelTextColumn],[SamanLayerId],[isActive]) VALUES (@Field1,@Field2,@Field3,@Field4,@Field5,@Field6,@Field7,@Field8,@LayerID,1)
else
update [dbo].[MapSyncSetting] set GISLinkedServerName = @Field1,GISDataBaseName = @Field2,GISCodeColumn = @Field3,GISKeyColumn = @Field4,GISLayerName = @Field5,GISLastEditColumn = @Field6,GISCreateColumn = @Field7,GISLabelTextColumn = @Field8,isActive = 1 where SamanLayerId = @LayerID
select * from MapSyncSetting where SamanLayerId = @LayerID
— اجرای سینک
exec [dbo].[SyncMapData]
— نتیجه
select top 100 * from LayerInfo A join ShapeInfo B on A.NIdLayer = B.NIdLayer where A.LayerID = @LayerID