புள்ளிவலை

மூளைக்குத் தீனியில்லாத போழ்து
சிறிது மனதுக்கும் ஈயப்படும்.
posts - 23, comments - 60, trackbacks - 0

ஸ்டோர்ட் ப்ரோசீஜர் இயக்கவுரிமை ப்ரச்சனை: ஓனரை மாத்த வேணாம்!


பகிர்வு நிலையில் இருக்கும் வெப் சர்வரில் (shared hosting) நிறுவப்பட்ட இணையப் பயன்பாடுகளில,் ஸ்டோர்ட் ப்ரோசீஜரை அழைக்கும்பொழுது அடுத்துள்ள வரியினைப் போன்ற பிழைச்செய்தி சில நேரம் வரலாம்:


EXECUTE permission denied on object 'storedprocedure_name்' database 'டேட்டாபேஸ்' owner 'குப்புசாமி'


SQL Script கோப்பு அல்லது அப்படியே காப்பி/பேஸ்ட் செய்யப்பட்ட ஸ்டோர்ட் ப்ரோசிஜர் வரிகளைப் பயன்படுத்தி உருவாக்கும்பொழுது, குறிப்பிட்ட ச்டோர்ட் ப்ரோசிஜருக்கான சொந்தக்காரர் dbo என்றே அமைந்து விடும் நிலை ஏற்படுகிறது. அதாவது, dbo.storedprocedure_name என்ற முழுப்பெயரில். உரிமைகள் வரையறுக்கப்பட்ட ஒரு பயனர்க்கணக்கிலிருந்து இயக்கப்படும்போது, இவ்விதமான ஸ்டோர்ட் ப்ரோசிஜர் (மற்றும் எல்லா விதமான டேட்டாபேஸ் ஆப்ஜக்ட்களுமே) மிகவும் பாதுகாப்பாக இருக்கிறது. எனினும், அப்படிப்பட்ட பயனர்க்கணக்குக்கு இந்த ஸ்டோர்ட் ப்ரோசிஜரை அழைக்க, இயக்குவுரிமை எனப்படும் execute permission இருக்க வேண்டும். இல்லையென்றால் அப்படிப்பட்ட பயனர்க்கணக்கினால் ஒரு பெரிய பயனும் இல்லை.

வெப் சர்வர் நிறுவன உதவியாளர்களிடம் இப்படிப்பட்ட பிழைச்செய்தியைப் பற்றி முறையிட்டால், "ஆப்ஜக்ட் ஓனரை மாற்றிவிடுங்கள்" என்று சர்வசாதாரணமாக பதில் வரும். கீழ்க்காணும் வரி அதற்கு உதவும்:

EXEC
sp_changeobjectowner 'storedprocedure_name', 'குப்புசாமி'

அதாவது dbo.storedprocedure_name என்பதை, குப்புசாமி.storedprocedure_name என்பதாக மாற்றச்சொல்லி அறிவுரை வரும். ஆனால் இது நல்லதல்ல. இதைவிடச் சிறந்த மற்றும் சுலபமான முறை, இந்த ஸ்டோர்ட் ப்ரோசிஜருக்கு இயக்கவுரிமை கொடுப்பதுதான். இந்த மாதிரி:


GRANT EXECUTE ON
dbo.storedprocedure_name TO குப்புசாமி


இதனால், பற்பல பயனர்க்கணக்குகள் இதே ஸ்டோர்ட் ப்ரோசிஜரை இயக்க வழி செய்யலாம். அதே நேரம், டேட்டாபேஸ் ஓனரிடம் இந்த ஸ்டோர்ட் ப்ரோசிஜருக்கான எல்லா கட்டுபாடும் தங்கி இருக்கும். உரிமை குறைந்த வேறு பயனர்கள் இதை அழிக்கவோ மாற்றவோ முடியாது.

Print | posted on Wednesday, August 29, 2007 10:07 PM | Filed Under [ தகவல் தளம் ]

Feedback

Gravatar

# re: ஸ்டோர்ட் ப்ரோசீஜர் இயக்கவுரிமை ப்ரச்சனை: ஓனரை மாத்த வேணாம்!


Industry standard practice is Create Role, assign Execute permissions to SP and Function, Select permission to Tables.

Then assign Role to a one user (non admin)

Even though you have also mentioned something similar, what surprises me is who changes the owner.

Good post anyway for whoever even thinks of changing the owner.
10/19/2007 6:20 AM | ganesh
Gravatar

# re: ஸ்டோர்ட் ப்ரோசீஜர் இயக்கவுரிமை ப்ரச்சனை: ஓனரை மாத்த வேணாம்!

கணேஷ், பின்னூட்டத்திற்கும் தகவலுக்கும் மிக்க்க நன்றி. எஸ்.க்யூ.எல் சர்வரைப் பொருத்தவரை, எனக்கு DBA அளவுக்கு தெரியாது. ஆனால், இந்த இணையத்தளம் உட்பட, நிறைய தளங்களை, குறிப்பாக shared hostingஇல் இருக்கும் தளங்களை சிலநேரம் நிர்வகிக்க நேர்கிறது. மிகவும் குறைந்த கட்டணத்தில் கிடைக்கும் shared hostகளில், database administrator support மட்டுமல்ல, சில நேரங்களில் தேவையான விஷயங்களைப் பெறவும் நிறைய தாமதமாகிறது, அல்லது பெற முடியாமலே போய்விடுகீறது. அதில் கிடைக்கும் அனுபவங்களையும் ஒரு குறிப்பு போல சேமித்து வைக்கவும் இந்த வலைப்பூவைப் பயன்படுத்துகிறேன்.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 1 and 2 and type the answer here:

Powered by: