একটি নির্দিষ্ট ব্যক্তি আমাদের ডেটাবেসগুলির মধ্যে একটি টেবিল ফাংশন ব্যবহার করতে পারে কিনা তা পরীক্ষা করতে সম্প্রতি আমি লগইন হিসাবে এক্সিকিউটি ব্যবহার করেছি using পরীক্ষাগুলিতে প্রমাণিত হয়েছিল যে তিনি পারতেন কিন্তু তিনি বারবার ব্যর্থতার কথা জানিয়েছেন।
ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যক্তি লগইন 'WEB' ব্যবহার করে এবং লগইন "WEB" এর সাথে সম্পর্কিত সেই ডাটাবেসে তার ব্যবহারকারীর 'WEB' রয়েছে তাই আমি নিম্নলিখিত স্ক্রিপ্টগুলি চেষ্টা করেছিলাম:
-- part 1
EXECUTE AS USER = 'WEB'
GO
SELECT
USER_NAME() AS 'user_name'
,SUSER_NAME() AS 'suser_name'
,SUSER_SNAME() AS 'suser_sname'
,SYSTEM_USER AS 'system_user'
GO
REVERT
GO
এবং
-- part 2
EXECUTE AS LOGIN = 'WEB'
GO
SELECT
USER_NAME() AS 'user_name'
,SUSER_NAME() AS 'suser_name'
,SUSER_SNAME() AS 'suser_sname'
,SYSTEM_USER AS 'system_user'
GO
REVERT
GO
প্রথম অংশটি ফলাফলের সাথে ভাল ছিল:
ওয়েব | ওয়েব | ওয়েব | ওয়েব
তবে দ্বিতীয় ফলাফলটি কিছুটা বিভ্রান্তিকর ছিল:
ডিবিও | ওয়েব | ওয়েব | ওয়েব
ব্যবহারকারী হিসাবে এক্সিকিউট এবং দ্বিতীয় হিসাবে ব্যর্থ করে তোলে হিসাবে লগইন হিসাবে এক্সিকিউট মধ্যে পার্থক্য কি? এছাড়াও, অবশ্যই, প্রথমটি হ'ল ডাটাবেস স্তর এবং দ্বিতীয়টি হ'ল সার্ভার স্তর স্তরের নকল, যা সম্পর্কে আমি সচেতন এবং সেখানকার পরিস্থিতি ব্যাখ্যা করে না।