نظرة عامة حول بنية قاعدة بيانات و توزيع
لإنشاء قاعدة بيانات أو قم بينشر التحديثات إلى قاعدة بيانات موجودة من جهاز مشروع قاعدة بيانات إلى ملقم قاعدة بيانات، يجب إنشاء مشروع قاعدة بيانات وثم ينشر هذا الخادم.
تجميع الخطوة إنشاء مشروع قاعدة بيانات الخاصة بك في ملفات التي يتم استخدامها للنشر. تضمين هذه ملف s.dbschema في ملف،.توزيعmanifest ملف، وبرامج نصية pre-توزيع و ينشر-توزيع. لا يوجد comparهوon مع قاعدة بيانات هدف هو تنفيذ عند قيامك بإنشاء مشروع قاعدة بيانات. عندما تقوم بنشر المشروع قاعدة بيانات، وإخراج إجراء البنية هو مقارنة بقاعدة بيانات الهدف (إذا exهوts)، والبرنامج نصي لتوزيع هو التي تم إنشاؤها. استناداً إلى إعدادات برنامج نصي هو نشر إلى قاعدة بيانات الهدف.
كـ بديل، يمكنك توليد برنامج نصي للنشر وقم بتعديل قبل نشرها إلى الخادم التدريج أو الإنتاج. عملية تنظيف البناء يحذف أي artifacts البنية موجود، مثل كـ برامج نصية والملفات الظاهرة لنشر الملفات.dbschema.
توزيع برامج نصية
يمكنك إنشاء برامج نصية التي يتم تشغيلها قبل أو بعد برامج نصية التي تقوم بإنشاء أو تحديث الهدف. يمكنك الحصول على برنامج نصي واحد فقط من pre-توزيع وبرنامج نصي ينشر-توزيع واحد، ولكن يمكنك تضمين برامج نصية الأخرى ضمن هذه برامج نصية. لمزيد من المعلومات، راجع إنشاء و تعديل برامج نصية لقاعدة البيانات.
بيان التوزيع
عندما تقوم ببنية قاعدة بيانات المشروع، بيان توزيع هو التي تم إنشاؤها. Th هو يحتوي البيان على الجميع معلومات تكوين على المستوى مشروع الذي هو المطلوبة لتمكينك من نشر دون أيضا الحاجة إلى ملف قاعدة بيانات مشروع (.dbproj).
ملف بيان نشر (.deploymanifest) هو ملف XML له بنية مشابه جداً لملف مشروع MSBuild. يتم تاريخ الإنشاء الملف.deploymanifest في المجلد sql\ التكوين في مجلد مشروع قاعدة بيانات، الموقع يكون تكوين تكوين البنية، مثل التصحيح أو الإصدار.
يظهر المثال التالي في.deploymanifest ملف ل فارغ SQL Server 2008مشروع قاعدة بيانات المسمى Empty2008DbProj:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TargetConnectionString>Data Source=stevenpoauth\sql2k8;Integrated Security=True;Pooling=False</TargetConnectionString>
<TargetDatabase>Empty2008DbProj</TargetDatabase>
<DeployToDatabase>True</DeployToDatabase>
<DeployToScript>True</DeployToScript>
<SourceModel>Empty2008DbProj.dbschema</SourceModel>
<DeployScriptFileName>Empty2008DbProj.sql</DeployScriptFileName>
<DeploymentConfigurationFile>Empty2008DbProj_Database.sqldeployment</DeploymentConfigurationFile>
</PropertyGroup>
<PropertyGroup>
<SqlCommandVariablesFile>Empty2008DbProj_Database.sqlcmdvars</SqlCommandVariablesFile>
</PropertyGroup>
<ItemGroup>
<DeploymentExtensionConfiguration Include="Empty2008DbProj_Script.PostDeployment.sql">
<__PostdeploymentMetadata>
</__PostdeploymentMetadata>
</DeploymentExtensionConfiguration>
<DeploymentExtensionConfiguration Include="Empty2008DbProj_Script.PreDeployment.sql">
<__PredeploymentMetadata>
</__PredeploymentMetadata>
</DeploymentExtensionConfiguration>
</ItemGroup>
<ItemGroup>
<DeploymentExtension Include="Microsoft.Data.Schema.Sql.Build.SqlPlanOrderModifier">
<Assembly>Microsoft.Data.Schema.Sql</Assembly>
<Version>10.0.0.0</Version>
<Token>sD9ffxHVCjo=</Token>
</DeploymentExtension>
<DeploymentExtension Include="Microsoft.Data.Schema.Sql.Build.SqlPrePostDeploymentModifier">
<Assembly>Microsoft.Data.Schema.Sql</Assembly>
<Version>10.0.0.0</Version>
<Token>sD9ffxHVCjo=</Token>
</DeploymentExtension>
<DeploymentExtension Include="Microsoft.Data.Schema.Sql.Refactoring.SqlRefactoringDeploymentContributor">
<Assembly>Microsoft.Data.Schema.Sql</Assembly>
<Version>10.0.0.0</Version>
<Token>sD9ffxHVCjo=</Token>
</DeploymentExtension>
</ItemGroup>
</Project>
بيان نشر ملف يحتوي على واحد أو المزيد عقد PropertyGroup التي تعرف تكوين الافتراضي المستخدم عند نشر. توزيع يشتمل ItemGroup العقد التي تحتوي على توزيع ExtensionConfiguration العقد والعقد مرجع ملف البيان.
تعريف العقد DeploymentExtensionConfiguration ملفات تكوين التي تم تمريرها إلى ملحقات توزيع عند نشر. تضمين هذه الملفات تكوين برامج نصية pre-توزيع و يينشر-توزيع بالإضافة إعادة بناء التعليمات البرمجية يسجل يستخدم للاحتفاظ بهدف عند ينشر.
تعريف العقد مرجع artifacts أي التي يتم الرجوع إليها بواسطة مشروع والتي يتم نسخها في مجلد إخراج عندما تقوم بنية مشروع. تتم معالجة الملفات المرجعية عند نشر للتأكد من أن طراز قاعدة بيانات هو إعادة إنشاء بشكل صحيح.
المعاملات في برنامج نصي توزيع
الأكثر قاعدة بيانات التغييرات في توزيع تحدث برنامج نصي داخل معاملة حيث التغييرات التي يمكن أن يتم التراجع إذا توزيع فشل. على الرغم من ذلك، الكائنات التالية هي تاريخ الإنشاء أو محدث أو حذفها خارج عملية توزيع.
الإصدار الخادم SQL |
الكائنات خارجية المعاملات توزيع |
---|---|
SQL Server 2008 |
عضوية دور الخادم Endpoints كامل-فهارس نص كامل-النشرات المصورة نص الخوادم المرتبطة Logins الخادم مرتبط جلسات عمل حدث الخادم تدوين المواصفات قوائم إيقاف نص الكامل |
SQL Server 2005 |
عضوية دور الخادم Endpoints كامل-فهارس نص كامل-النشرات المصورة نص الخوادم المرتبطة Logins الخادم مرتبط |
بشكل عام، هذه الكائنات يجب خارج عملية توزيع بسبب أن هي بواسطة استخدام النظام الإجراءات المخزنة.
الاعتبارات الخاصة بنشر التغييرات إلى قاعدة موجود
عندما تقوم بنشر التغييرات إلى قاعدة بيانات موجودة، بعض التغييرات قد يؤدي فقدان البيانات. إذا كان قد يتسبب في تغيير بيانات في جدول إلى فقدان، سيتم إلغاء توزيع في حالة محدد خانة الاختيار منع توزيع المتزايد إذا قد يحدث فقدان بيانات هو المحدد. بشكل افتراضي، th هو خانة الاختيار هو محددة، ولكن يمكنك العثور عليه في الإطار "خصائص" للمشروع. لمزيد من المعلومات، راجع CA1813:.
سوف تتسبب في فقد بيانات أنواع التغييرات التالية: إذا كان جدول هو إسقاط وإعادة إنشائها، وإذا قمت بتغيير الحجم عمود (char(100) char(50) أو nchar(100) إلى char(100))، أو إذا قمت بتغيير ترتيب نسخ عمود يحتوي على نوع حرف.
ملاحظة
عند استخدام إعادة بناء التعليمات البرمجية إلى إعادة تسمية كائن قاعدة بيانات أو قم بنقل كائن قاعدة بيانات إلى مخطط آخر، يسجل ملف السجل إعادة بناء التعليمات البرمجية هذا إجراء. وقت توزيع، المعلومات الموجودة يسجل ملف تساعد في الحفاظ على هدف التغييرات الخاصة بك. على سبيل المثال، قد تفقد بيانات إذا قمت بتمت إعادة التسمية جدول، لأنه قد يكون إسقاط الجدول و قد يتم تاريخ الإنشاء جدول بالاسم الجديد. باستخدام ملف السجل إعادة بناء التعليمات البرمجية، توزيع برنامج نصي بدلاً من تغيير اسم الجدول، مع الاحتفاظ هدف والبيانات الخاصة بك.
استرداد من فشل توزيعات
فقدان بيانات إذا كان الخاص بك توزيع فشل خارج مقاطع المتعامل بها توزيع برنامج نصي. ولهذا السبب، شدة يجب الوضع قاعدة بيانات مشتركة في الوضع مستخدم المفرد و النسخ الاحتياطي قبل نشرها.
ضافة ملفات مستبعدة
في حالة استبعاد ملف s من مشروع قاعدة بيانات الخاصة بك، لن يتم مُضمن الكائنات قاعدة بيانات المعرفة داخل تلك ملف s في.dbschema ملف الذي يتم إنشاؤه عندما يتم تاريخ الإنشاء مشروع قاعدة بيانات. لم يتم نشر هذه الكائنات لأن الكائنات لم يتم تضمينها في ملف.dbschema. إذا كانت لا تزال تعمل تشغيل كائن واحد أو أكثر ولكنك ترغب في توزيع العمل بالفعل كاملة، يمكنك استبعاد ملف s من الإنشاء حتى يتم مُضمن الكائنات التي تكون تشغيل جاهز فقط في.dbschema ملف ونشره تشغيل قاعدة البيانات الهدف. يمكنك تضمين الملفات لاحقاً عندما تصبح جاهزة إلى نشرها، وسيتم نشر تحديث قاعدة بيانات مع الكائنات جديدة دون تعديل الكائنات موجودة (إذا كانت لم يتم تم تغييره في مشروع الخاص بك). لمزيد من المعلومات، راجع كيفية القيام بما يلي: استبعاد الملفات من قاعدة بيانات مشروع.
هام
فقدان بيانات إذا قمت باستبعاد الكائنات من مشروع قاعدة بيانات الموجودة في قاعدة بيانات الهدف و ثم يقوم بنشر مشروع. سيتم تم الحذف هذه الكائنات من قاعدة البيانات الهدف في حالة محدد خانة اختيار جمل إسقاط توليد للكائنات في قاعدة البيانات الهدف لكنها تكون غير موجودة في قاعدة بيانات مشروع هو محددة في تكوين توزيع.
الخادم المشاريع
مشاريع الخادم يحتوي على ملفات تعريف لكائنات في "شكل رئيسي" قاعدة بيانات. اسم قاعدة بيانات الهدف الخاصة بمشروع الخادم دوماً "الرئيسيه". لكل إعداد الملقم، يمكنك تحديد ما إذا كنت تريد إلى التحقق من القيمة هذا الإعداد عند نشر مشروع الملقم. يتم تجاهل الإعدادات التي لا قم بالتحقق. إذا لم تطابق القيمة إعداد الملقم القيمة الإعداد التي تريد التحقق منها، يفشل توزيع مع ظهور رسالة خطأ.
الأمر-خط الإنشاء
بالإضافة إلى القيام بنية نشر أو مسح الإجراءات من خلال Visual Studioواجهة مستخدم، يمكنك أيضا تنفيذ الإجراءات التالية في تعجيل الأوامر باستخدام MSبنية.exe. يمكنك تحديد بنية، التوزيع، إعادة بنية، وتنظيف الأهداف. حسب الافتراضي، والإنشاء ونشر استخدام معالجات في خصائص المشروع التي تم تعريفها في مشروع قاعدة بيانات (في الملف.dbproj أو. dbproj.مستخدم الملف). ومع ذلك، يمكنك يمنع هذه خصائص في تعجيل الأوامر أو من ملف الاستجابة.
هام
يجب إغلاق Visual Studioقبل تنفيذ سطر الأوامر بنية. إذا قمت بإجراء سطر الأوامر بنية عند Visual Studioهو تشغيل، بعض الأخطاء قد لا يتم حظر.
سطر الأوامر بناء الجملة
يمكنك بنية مشروع قاعدة بيانات في تعجيل الأوامر بواسطة استخدام الأمثلة التالية لبناء الجملة:
MSBuild/الهدف:بنية MySolutionName.sln
ينجز هذا المثال إجراء بناء تشغيل الحل الذي يسمى MySolutionName ملفات.sln باستخدام خصائص مشروع المحددة في مشروع الذي الحل يحتوي تشغيل. إذا كان يحتوي الحل على عدة مشاريع قاعدة بيانات، فإنها مضمنة مع كل شيء آخر في الحل. يمكنك أيضا بنية مشروع قاعدة بيانات معينة. يتضمن الهدف بنية برامج نصية pre-توزيع و ينشر-توزيع في برنامج نصي للإنشاء الذي تم إنشاؤه.MSBuild/الهدف: نشر/p:UseSandboxSettings = خطأ/p:الهدفDatabase = UpdatedالهدفDatabase; الهدفConnectionString = "بيانات المصدر =\SQLEXPRESS;Integrated (المحلي) الأمان = صواب; تجمع = خطأ".dbproj MyProjectName
يوضح هذا المثال كيفية إلى نشر مشروع قاعدة بيانات أثناء تجاوز سلسلة اسم واتصال قاعدة بيانات الهدف.MSBuild/الهدف: نشر/p:UseSandboxSettings = خطأ/p:DeploymentConfiguration = من DeployPath\/p:SqlCommandVarsFile.deploymentconfig AlternateDeploymentConfiguration= من VarPath\/p:الهدفDatabase.sqlcmdvars AlternateVariables= UpdatedالهدفDatabase; الهدفConnectionString = "بيانات المصدر =\SQLEXPRESS;Integrated (المحلي) الأمان = صواب; تجمع = خطأ".dbproj MyProjectName
يوضح هذا المثال كيفية إلى نشر مشروع قاعدة بيانات أثناء تعيين سلسلة اتصال وقاعدة بيانات هدف مختلفة وتجاوز تكوين توزيع والتوزيع المتغيرات.MSBuild/الهدف: نشر/p:UseSandboxSettings = خطأ/p:BuildScriptName = /p:دليل المخرجات.sql MyScriptName= من BuildScriptPath /p:TargetDatabase = UpdatedTargetDatabase ؛ TargetConnectionString = "مصدر بيانات = اسم مثيل \ اسم قاعدة بيانات ؛" الأمان متكامل "= صواب; تجمع = خطأ" من مسار المشروع\.dbproj MyProjectName
يوضح هذا المثال كيفية إلى نشر قاعدة بيانات من كمبيوتر آخر غير الذي حدث الإنشاء. على سبيل المثال، قد تستخدم بناء الجملة التالي في حالة وجود مركزية بنية جهاز الكمبيوتر الذي يقوم بإنشاء بنية كتابة برنامج نصي لكل وردية. يجب تحديد اسم البرنامج النصي للإنشاء مسار الموقع البرنامج النصي للإنشاء يمكنك العثور على (دليل المخرجات)، قاعدة بيانات الهدف ومسار و ملف اسم مشروع قاعدة بيانات.MSBuild @dbbuild.arf MyProjectName.dbproj
يوضح هذا المثال كيفية إلى تستخدم ملف استجابة إلى توفير وسائط سطر الأوامر. ملف، dbbuild.arf، يمكن أن تحتوي على أية وسائط صالح ل MSBuild، بما في ذلك تلك التي يمنع خصائص مشروع.MSBuild/الهدف:اعادة تجميع MyProjectName.dbproj
وهذا مثال يقوم برنامج إعادة إنشاء مشروع المحدد أو حل، حتى إذا لم تتغير منذ آخر مرة تم إنشاؤها عليه.MSBuild/الهدف: تنظيف.dbproj MyProjectName
يوضح هذا المثال كيفية إلى يحذف أية برامج نصية البنية موجود. في معظم الحالات، اتبع هذا إجراء باستخدام بنية أخرى أو نشر إجراء.
ملاحظة
يمكنك اختصار/الهدف: كـ /t: و/خاصية: كـ /p:.
لمزيد من المعلومات، راجع مرجع سطر الأوامر MSBuild.
لمزيد من المعلومات حول الاستجابة ملفات، راجع هذا الموضوع في موقع Microsoft Office 2010 Suite تشغيل ويب: استجابة MSBuild الملفات.
ملاحظة
إلى تشغيل MSBuild.exe، يجب أما استخدام Visual Studioيجب تشغيل تعجيل الأوامر، أو في ملف دفعي vsvars32.bat. يمكنك العثور على هذا الملف الدفعي في المجلد الذي يقوم بتعيين متغير بيئة% VS80COMNTOOLS%.
خصائص المشروع
بعض خصائص قاعدة بيانات و خادم مشاريع تؤثر على كيفية بناء هذه مشاريع و نشرها. يتم تخزين هذه الخصائص في ملف مشروع و الملف.مستخدم، ولكن يمكن يمنعها لهم في comm و ملف المطالبة أو استجابة. للمزيد من المعلومات، راجع كيفية القيام بما يلي: Common Data Views وكيفية القيام بما يلي: قم بتكوين إعدادات توزيع لقاعدة بيانات ومشاريع الخادم.
تجاوز خصائص بيان نشر
يمكنك يمنع خصائص توزيع افتراضية (مثل تكوين نشر سلسلة الاتصال أو المتغيرات SQLCMD) عندما تقوم بنشر من الأمر الخط. قد تختار إلى القيام بذلك إذا كنت تريد إلى نشر ملف.dbschema في إلى بيئات متعددة.
على سبيل المثال، إذا كنت ترغب في نشر المعرفة في EnterpriseDB.dbproj في تطوير مخطط، اختبار، و بيئة الإنتاج، يمكنك استخدام comm التالية و الخطوط:
بيئة التوزيع
MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\Development.sqldeployment /p:SqlCommandVariablesFile=sql\debug\Development.sqlcmdvars /p:TargetConnectionString="Data Source=DEV\sql2008;Integrated Security=true;Pooling=false"
بيئة الاختبار
MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\UserTest.sqldeployment /p:SqlCommandVariablesFile=sql\debug\UserTest.sqlcmdvars /p:TargetConnectionString="Data Source=USERTEST\sql2008;Integrated Security=true;Pooling=false"
بيئة الإنتاج
MSBuild EnterpriseDB.dbproj /t:Deploy /p:UseSandboxSettings=false /p:DeploymentConfigurationFile=sql\debug\Production.sqldeployment /p:SqlCommandVariablesFile=sql\debug\Production.sqlcmdvars /p:TargetConnectionString="Data Source=PRODUCTION\sql2008;Integrated Security=true;Pooling=false"
في كل بيئة، قمت بتوفير ملف تكوين توزيع مختلفة وملف آخر لمتغيرات SQLCMD سلسلة اتصال مختلفة.
راجع أيضًا:
المهام
كيفية القيام بما يلي: قم بتوليد قاعدة بيانات مشروع إلى توليد مخطط ترجمة ملف (.dbschema)
كيفية القيام بما يلي: Deploy Changes to New or Existing Databases
الإرشادات التفصيلية: Create and Deploy a New Version-Controlled Database
الإرشادات التفصيلية: Deploy Changes to an Existing Version-Controlled Database
المبادئ
إرشادات لكتابة تعليمات برمجية آمنة
Build and Deploy Databases to a Staging or Production Environment