إعداد البرمجة النصية لبريد قاعدة البيانات
-
29-09-2019 - |
سؤال
لقد استخدمت واجهة المستخدم الرسومية SQL Server 2008 لإعداد ملفات تعريف البريد وقاعدة البيانات على خادم الاختبار الخاص بي ، وأود الآن تكرارها على قاعدة بيانات الإنتاج الخاصة بنا.
هل هناك طريقة لإنشاء نص للقيام بذلك؟
المحلول
AFAIK ، لا توجد وسيلة لإجراء النص بالضرورة من SSMS ولكن يمكنك إنشاء برنامج نصي قابل للنقل في TSQL مرة واحدة وإعادة استخدامه على جميع الخوادم. إليك مثال جيد لتبدأ في هذا:
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
-- Create a New Mail Profile for Notifications
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DBA_Notifications',
@description = 'Profile for sending Automated DBA Notifications'
GO
-- Set the New Profile as the Default
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DBA_Notifications',
@principal_name = 'public',
@is_default = 1 ;
GO
-- Create an Account for the Notifications
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQLMonitor',
@description = 'Account for Automated DBA Notifications',
@email_address = 'email@domain.com', -- Change This
@display_name = 'SQL Monitor',
@mailserver_name = 'smtp.domain.com' -- Change This
GO
-- Add the Account to the Profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DBA_Notifications',
@account_name = 'SQLMonitor',
@sequence_number = 1
GO
سيكون الخيار الآخر هو الاستفادة من SMO ، إما من خلال .NET أو PowerShell لإنشاء البرامج النصية. ستكون مرجع SMO لهذا هو:
تحديث:
إليكم مدى سهولة اتضح أنه من النصوص مع PowerShell و SMO:
[void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
#Set the server to script from
$ServerName = "ServerName";
#Get a server object which corresponds to the default instance
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server $ServerName
#Script Database Mail configuration from the server
$srv.Mail.Script();
لا تنتمي إلى StackOverflow