it-swarm.dev

النصي قاعدة بيانات كاملة مزود خادم

هل هناك طريقة يمكنني الحصول عليها من جميع الجداول ، procs والكائنات الأخرى من قاعدة بيانات؟ أعلم أن هناك خيارًا لوضع برنامج نصي لقاعدة البيانات ، لكنه أعطاني نوعًا من البرنامج النصي الأعلى ، وبالتأكيد ليس برنامج نصي لإنشاء جميع الجداول ، procs ، udfs ، .etc.

89
PositiveGuy

من Management Studio انقر بزر الماوس الأيمن على قاعدة البيانات الخاصة بك. المهام -> توليد البرامج النصية.

يجب أن تفعل ذلك.

153
Chris Brandsma

كتبت أداة مساعدة لسطر الأوامر مفتوحة المصدر باسم SchemaZen التي تقوم بذلك. إنها أسرع بكثير من البرمجة النصية من استوديو الإدارة ، كما أن الإخراج أكثر سهولة في التحكم في الإصدار. وهو يدعم البرمجة على حد سواء المخطط والبيانات.

لإنشاء البرامج النصية تشغيل:

البرنامج النصي schemazen.exe - serverhost المضيف - قاعدة بيانات db --scriptDir c:\somedir

ثم لإعادة إنشاء قاعدة البيانات من تشغيل البرامج النصية:

schemazen.exe إنشاء - الخادم المضيف المحلي - قاعدة بيانات ديسيبل - scriptDir ج:\somedir
12
Seth Reno

كتبت أداة مساعدة لهذه المهمة ، SMOscript .

يتم تنفيذ إنشاء البرنامج النصي بواسطة مكتبة SMO ، ويدعم أنواع الكائنات الجديدة في SQL 2005 و 2008.

4
devio

لقد انتهى الأمر باستخدام مزيج من إنشاء برامج نصية SSMS لاستخراج المخطط والبيانات ، ثم استخدام أداة قاعدة البيانات الخاصة بنا التي تتيح تحليل الكلمات الرئيسية واستبدال الرمز المميز في البرامج النصية. كما يضمن أن يتم تطبيق النصوص مرة واحدة فقط.

لماذا ا؟

  • نحتاج إلى دعم عمليات التثبيت على SQL Server 2000 و 2005 و 2008 ، وهناك تغييرات على أنواع البيانات بين الإصدارات ، على سبيل المثال 2005+ لديك nvarchar (max) ، في حين أن 2000 يدعم فقط ntext. لذلك تستخدم البرامج النصية الخاصة بنا رمزًا مميزًا واستناداً إلى خيار db يستبدل بالنوع الصحيح.
  • يتطلب تنفيذ بعض البرامج النصية فترة انتظار بعد التنفيذ ، على سبيل المثال وجدنا إذا لم تنتظر بضع ثوانٍ بعد إنشاء قواعد بيانات جديدة عبر برنامج نصي ، فقد يفشل SQL Server أحيانًا (لأنه لم يتح له الوقت لإنشاء ملفات db) عندما استمر في إنشاء الجداول ، إلخ.
  • أردنا الحفاظ على تاريخ ما تم تنفيذ البرامج النصية ومتى.
  • أردنا السماح لبرنامج التثبيت Wix MSI الخاص بنا بتحديد سلسلة الاتصال وبيانات الاعتماد ، وتحتاج إلى بعض الطرق لتمريرها إلى البرامج النصية ، وذلك مرة أخرى باستخدام الرموز وبعض المنطق الشرطي.

مثال على السيناريو (تم تعديله لإيجاز)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
    CREATE USER [$User$] FOR LOGIN [$Login$]
    EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
3
si618

بمجرد النظر إلى بيانات الجدول ، لإخراج كل محتوى بيانات الجدول في Management Studio 2012 و 2014 ، إنه مخفي بعض الشيء لكنني وجدت الخيار بعد البحث:

  1. انقر بزر الفأرة الايمن
  2. حدد "المهام"> "إنشاء البرامج النصية ..."
  3. في "تعيين خيارات البرمجة النصية" ، انقر فوق "خيارات متقدمة"
  4. ضمن "عام" ، عيّن "أنواع البيانات إلى نص" على "صحيح" (في أسفل المجموعة "عام")
1
Cameron Forward

أوصي بالنظر في الرابط RedGate SQL. إنه ليس مجانيًا ، لكنه كان مفيدًا بما فيه الكفاية ليكون يستحق الثمن.

1
Barry Hurt

إذا كنت بحاجة إلى القيام بذلك بشكل برمجي ، يمكنك استخدام مكتبة SQL DMO (OLE) مقابل SQL Server 2000 ، ولكن على الأرجح قد ترغب في استخدام مكتبة SMO SQL (مكتبات .NET الأصلية) مقابل SQL Server 2005 والإصدارات الأحدث.

كلا المكتبات هذه جزء لا يتجزأ من تثبيت أدوات إدارية SQL Server.

هذا في حالة أن إنشاء البرنامج النصي لقاعدة البيانات الكاملة من SQL Server Management Studio غير كافٍ.

0
polyglot