it-swarm.asia

منح أذونات لتشغيل مهمة خادم SQL

لدي وظيفة على خادم MSSQL 2005 ، أريد السماح لأي مستخدم لقاعدة البيانات بالتشغيل.

لست قلقا بشأن الأمن ، لأن المدخلات للعمل الفعلي للمهمة تأتي من جدول قاعدة بيانات. مجرد تشغيل المهمة ، دون إضافة سجلات إلى هذا الجدول لن تفعل شيئًا.

لا يمكنني العثور على كيفية منح أذونات عامة لهذه الوظيفة.

هل هناك أي طريقة للقيام بذلك؟ الشيء الوحيد الذي يمكنني التفكير فيه في هذه المرحلة هو أن تعمل الوظيفة باستمرار (أو وفقًا لجدول زمني) ، ولكن نظرًا لأنها تحتاج فقط إلى القيام بأي عمل فعلي نادرًا (ربما مرة واحدة كل بضعة أشهر) وأريد أن يكون العمل بمجرد أن يتم ذلك ، لا يبدو أن هذا هو الحل الأمثل.

22
Shahar Mosek

يمكنك إنشاء إجراء مخزن يقوم بتشغيل المهمة. يمكنك استخدام with execute as owner لتشغيل الإجراء المخزن كمالك قاعدة البيانات. بهذه الطريقة ، لا يحتاج المستخدمون أنفسهم إلى تصاريح على sp_start_job.

create procedure dbo.DoYourJob
with execute as owner
as
exec sp_start_job @job_name = 'YourJob'

امنح حقوق التنفيذ على DoYourJob للسماح للأشخاص ببدء العمل.

بالطبع ، يمكنك أيضًا وضع محتويات الوظيفة في إجراء ، ومنح الحقوق لتشغيلها. سيسمح ذلك بمزيد من التفاعل ، مثل عرض نص النتيجة.

20
Andomar

في الأساس ، هناك حاجة إلى أذونات sp_start_job (انظر قسم الأذونات).

الأدوار موصوفة في " أدوار قاعدة البيانات الثابتة لعامل SQL Server " (مرتبطة من الأعلى)

تحرير ، يناير 2012

بعد التصويت السلبي المجهول بعد عامين من إجابتي ...

اقرأ السؤال. انها تقول

أريد السماح لأي مستخدم لقاعدة البيانات بالتشغيل

ثم

لست قلقا بشأن الأمن

و أيضا

لا يمكنني العثور على كيفية منح أذونات عامة لهذه الوظيفة

لذا تتعارض تعليقات OP أدناه مع السؤال

3
gbn

سيسمح هذا لمستخدم معين (user1) بتشغيل أي مهمة عامل Sql.

يمكن لأعضاء SQLAgentUserRole و SQLAgentReaderRole بدء المهام التي يمتلكونها فقط. يمكن لأعضاء SQLAgentOperatorRole بدء جميع الوظائف المحلية بما في ذلك الوظائف المملوكة للمستخدمين الآخرين

USE [msdb] GO CREATE USER [user1] FOR LOGIN [user1] GO USE [msdb] GO ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1] GO

1
drinky

لدي حاجة مماثلة لمنح الإذن لعامل التشغيل الخاص بي لتنفيذ مهام SQL Server Agent يدويًا. لقد اتبعت هذا المنشور أدوار قاعدة البيانات الثابتة لعامل SQL Server لمنح دور SQLAgentOperatorRole.

آمل أن يساعد هذا في حل قضيتك.

0
Vu Doan