SQL Server SMO TransferData () يحتفظ بالفشل
-
23-08-2019 - |
سؤال
أنا أستخدم طريقة النقل من فئة النقل في SQL Server SMO. لدي مكالمة تعمل على نظام التشغيل Windows XP، تشغيل SQL Server 2008 SP1، في محاولة لنقل جدول من SQL Server 2000 على خادم آخر إلى جهاز XP. كلاهما يستخدم نفس اسم مستخدم SQL وكلمة المرور. لقد اختبرت باستخدام معالج الاستيراد / التصدير وجرى غرامة.
الاستثناء أدناه وكان سجل الأحداث لديه خطأ "حزمة" SHELLPACKAGE "فشل".
يعرض خطأ الاستثناء خاصية الاستعلام فارغة ولا استبدال. أنا أفترض أن بعض قطعة DTS فشلت لكنني لست متأكدا من ولماذا.
استثناء: "خطأ: ErrorCode = -1073548784 الوصف = فشل تنفيذ الاستعلام " "مع الخطأ التالي: " "النوع" ل "" ألقى استثناء. ". أسباب الفشل المحتملة: مشاكل في الاستعلام، " نتائج "خاصية غير محددة بشكل صحيح، لا يتم تعيين المعلمات بشكل صحيح، أو اتصال غير محدد بشكل صحيح. r n helpfile = helpcontext = 0 idofinterfacewitherror = {c81dfc5a-3b22-4da3-bd3b-10bf861a7f9c}"
رمز بلدي:
try
{
string MasterUser = ConfigurationSettings.AppSettings["SQLUserName"];
string MasterPassword = ConfigurationSettings.AppSettings["SQLPassword"];
Server server = new Server(SourceServer);
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = MasterUser;
server.ConnectionContext.Password = MasterPassword;
Database databaseSource = server.Databases[SourceDatabaseName];
Transfer transfer = new Transfer(databaseSource);
transfer.CopyAllObjects = false;
transfer.DropDestinationObjectsFirst = false;
transfer.UseDestinationTransaction = true;
if (IsBasic)
{
transfer.CopyAllDefaults = false;
transfer.Options.Indexes = false;
transfer.Options.DriAll = false;
transfer.CopyAllDefaults = false;
}
else
{
transfer.CopyAllDefaults = true;
transfer.Options.Indexes = true;
transfer.Options.DriAll = true;
transfer.CopyAllDefaults = true;
}
transfer.Options.AnsiFile = true;
transfer.Options.SchemaQualify = true;
transfer.Options.WithDependencies = false;
transfer.CreateTargetDatabase = false;
transfer.CopySchema = true;
if (CopyData)
transfer.CopyData = true;
else
transfer.CopyData = false;
transfer.DestinationServer = DestinationServer;
transfer.DestinationDatabase = DestinationDatabaseName;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = MasterUser;
transfer.DestinationPassword = MasterPassword;
//find the able object
foreach (Table table in databaseSource.Tables)
{
if (table.Name == TableName)
{
tableToTransfer = table;
break;
}
}
transfer.Options.IncludeIfNotExists = true;
transfer.ObjectList.Add(tableToTransfer);
transfer.TransferData();
}
catch (DbException dbExp)
{
throw new FaultException(dbExp.Message);
}
catch (Exception ex)
{
throw new FaultException(ex.Message);
}
المحلول
تتضيف الخدمة التي تستضيف خدمة WCF (التعليمات البرمجية أعلاه) إلى مستخدم مجال.