۱۳۸۸/۰۵/۱۶

استفاده از قابليت Script Data اس كيوال سرور 2008 از طريق برنامه نويسي


همانطور كه مطلع هستيد قابليت تهيه عبارات Insert از جداول يك ديتابيس، به صورت استاندارد به management studio 2008 اضافه شده است. براي استفاده از اين قابليت از طريق برنامه نويسي به صورت زير مي‌توان عمل نمود:

الف) سه ارجاع را به اسمبلي‌هاي زير اضافه نمائيد:
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo

ب) اكنون كدي كه عمليات Script Data را با استفاده از قابليت‌هاي SMO ارائه مي‌دهد به صورت زير خواهد بود:

using System;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Sdk.Sfc;

/// <summary>
/// تهيه اسكريپت ركوردها
/// </summary>
/// <param name="dbName">نام ديتابيس مورد نظر</param>
/// <param name="table">نام جدولي كه بايد اسكريپت شود</param>
/// <param name="instance">وهله سرور</param>
/// <param name="userName">نام كاربري جهت اتصال</param>
/// <param name="pass">كلمه عبور جهت اتصال به سرور</param>
/// <returns>اسكريپت تهيه شده</returns>
public static string ScriptData(string dbName, string table, string instance, string userName, string pass)
{
try
{
ServerConnection serverConnection = new ServerConnection(instance, userName, pass);
Server server = new Server(serverConnection);
Database database = server.Databases[dbName];
if (database == null) return string.Empty;
Table tb = database.Tables[table];
Scripter scripter = new Scripter(server) {Options = {ScriptData = true}};
if (tb == null) return string.Empty;
StringBuilder sb = new StringBuilder();
foreach (string s in scripter.EnumScript(new Urn[] {tb.Urn}))
sb.AppendLine(s);
return sb.ToString();
}
catch(Exception ex)
{
//todo: log ...
return string.Empty;
}
}

نكته:
اسمبلي‌هاي SMO به همراه مجموعه SQL Server 2008 نصب مي‌شوند. بنابراين متد و برنامه‌ي فوق بر روي سروري با اين مشخصات بدون مشكل اجرا خواهد شد. اما اگر قصد توزيع برنامه خود را داريد بايد Microsoft SQL Server 2008 Management Objects را نيز به همراه برنامه خود نصب نمائيد.