MSDeploy dbFullSql провайдер для создания пакета работает, но не удается при развертывании - PullRequest
1 голос
/ 24 сентября 2010

В настоящее время я использую MSDeploy для переноса набора веб-сайтов из II6 на другую машину с IIS7.5.Фактическая миграция веб-сайта работает, как и ожидалось, но я также пытаюсь перенести связанные базы данных для каждого веб-сайта.

Пока я могу успешно перенести набор наших тестовых сайтов, но у меня возникают ошибки развертывания(и ЧРЕЗВЫЧАЙНО длительное время работы - 1 час + с 400 МБ дБ) по отношению к нашим живым сайтам.Кажется, сбои, которые я вижу, связаны с неким javascript, который хранится в базе данных sql (как данные).Похоже, что SMO BatchParser читает в сценарии sql , что он сгенерировал , он умирает в первой строке, пытаясь вставить строку с некоторым javascript в данных.

Вот это MSDeploy Команда, которую я использую:

msdeploy.exe -source:source-manifest.xml -dest:manifest=dest-manifest.xml

source-manifest.xml:
<sitemanifest>
  <dbFullSql path="Data Source=srv_source;Initial Catalog=db;User ID=usr;Password=pwd" Transacted="True" CopyAllLogins="False" CopyAllUsers="False" />
</sitemanifest>

dest-manifest.xml:
<sitemanifest>
  <dbFullSql path="Data Source=srv_dest;Initial Catalog=db;Integrated Security=true" DropDestinationDatabase="True" />
</sitemanifest>

Ошибка MSDeploy :

Error: An error occurred during execution of the database script. The approximate location of the error was between lines '17009' and '17400' of the script. The verbose log may have more information about the error. The command started with:
INSERT [dbo].[Pages] ([PathID], [PageID], [PageKey

Error:
Error count: 1.

Выдержка из файла sql , который вызывает ошибку:

INSERT [dbo].[Pages] ([PathID], [PageID], [PageKey], [DeveloperID], [FrameworkID], [MasterPageID], [FormID], [Label], [Description], [Status], [AdminPosition], [AdminIndent], [Created], [LastEdited], [PageScript], [PageScriptHead], [PageScriptForm], [PageOnLoad], [PageOnUnload], [PageOnSubmit], [HtmlAttributes], [HasThumbnail], [QueryStringVars], [FriendlyPageURL], [CanonicalURL], [MvtStatus], [MvtAutoOptimize], [MvtStartDate], [MvtEndDate], [MvtExperimentID], [DeepLinkOk]) VALUES (72, 580, N'zz', N'zz', N'zzz', N'zzz', NULL, N'zzz', N'zzz', N'U', 0, 0, CAST(0x00009D3D00A0C296 AS DateTime), CAST(0x00009D4C00C99FA8 AS DateTime), NULL, N'  <script language="javascript" type="text/javascript">
function javascript_stuff()
{
    this.$("panel").style.display = "block";
    ...
lots more snipped out code in here  
}

var regex = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/;

var jsobj = new jsobj();
</script>', NULL, NULL, NULL, NULL, NULL, 1, NULL, N'welcome', NULL, N'N', N'N', NULL, NULL, 0, 0)
GO

Также, если я пытаюсь импортировать пакет через Ошибка IIS UI :

An error occurred during execution of the database script. The approximate location of the error was between lines '17003' and '17394' of the script. The verbose log may have more information about the error. The command started with : 
INSERT [dbo].[Pages] ([PathID], [PageID], [PageKey

[Expanded Information]
Microsoft.Web.Deployment.DeploymentException: An error occurred during execution of the database script. The approximate location of the error was between lines '17003' and '17394' of the script. The verbose log may have more information about the error. The command started with : 
INSERT [dbo].[Pages] ([PathID], [PageID], [PageKey
 ---> ManagedBatchParser.ParserException
at ManagedBatchParser.Parser.Parse()
at Microsoft.Web.Deployment.SqlBatchParser.ProcessSqlCmdScript(String sqlCmdScript)
at Microsoft.Web.Deployment.SqlScriptToDBProvider.AddHelper(DeploymentObject source, Boolean whatIf)
--- End of inner exception stack trace ---
at Microsoft.Web.Deployment.SqlScriptToDBProvider.AddHelper(DeploymentObject source, Boolean whatIf)
at Microsoft.Web.Deployment.DeploymentObject.AddChild(DeploymentObject source, Int32 position, DeploymentSyncContext syncContext)
at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAddChild(DeploymentObject destParent, DeploymentObject sourceObject, Int32 position)
at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable)
at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentWellKnownProvider provider, String path, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
at Microsoft.Web.Deployment.UI.InstallProgressWizardPage.OnWorkerDoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

У кого-либо есть идеио том, как я мог обойти это?Если я запускаю файл sql из пакета напрямую, используя SQL Management Studio, он работает отлично.Поэтому, если в SMO BatchParser отсутствует ошибка, должна быть какая-то опция SMO, которую я мог бы установить, чтобы обойти эту проблему.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 30 сентября 2010

Команда Web Deploy здесь, мы смотрим на проблему.Оставайтесь с нами!

РЕДАКТИРОВАТЬ: Это определенно ошибка в Web Deploy, в нашем анализе скриптов TSData.Если скрипт содержит какое-либо утверждение, начинающееся с символа $, мы рассматриваем его как директиву sqlcmd.У меня нет обходного пути для вас - мы пытаемся понять, как мы можем это исправить в v2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...