এসকিউএল ২০০৮ আর 2 ব্যবহারকারী / স্কিমা তৈরি করে যখন উইন্ডোজ ব্যবহারকারী সারণী তৈরি করে


9

আমরা একটি সার্ভার লগইন এবং ডাটাবেস ব্যবহারকারীর সাথে যুক্ত করেছি যা একটি উইন্ডোজ গ্রুপকে একটি এসকিউএল ২০০ R আর 2 ইনস্ট্যান্সে ম্যাপ করে নীচের স্ক্রিপ্টটি ব্যবহার করে নাম প্রকাশ না করে:

USE master
go
CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
go
USE AppDb
go
CREATE USER [DOMAIN\AppUsers] FOR LOGIN 
[DOMAIN\AppUsers]
go
EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers'
go

যখন DOMAIN DOMAIN ব্যবহারকারীর অ্যাকাউন্টটি অ্যাপটিতে লগ হয়, তখন ব্যবহারকারী 1 ডিবিও স্কিমে টেবিলগুলি ঠিকঠাক অনুসন্ধান করে কারণ ইউজার 1 টি DOMAIN DOMAIN অ্যাপ্লুউজারের সদস্য, তবে এই অ্যাপ্লিকেশনটি ব্যবহারকারীকেও টেবিলগুলি তৈরি করতে দেয়। কোনও স্কিমা উল্লেখ না করে এই টেবিলগুলি তৈরি করার সময় , এসকিউএল সার্ভার নিম্নলিখিতটি করে:

  1. উদাহরণস্বরূপ এসএসএমএস \ সুরক্ষা user লগইনগুলিতে তালিকাভুক্ত নয় এমন একটি 'DOMAIN \ ব্যবহারকারী 1' লগইন অ্যাপডিবিতে এমন একটি 'DOMAIN \ ব্যবহারকারী 1' ব্যবহারকারী তৈরি করে।
  2. অ্যাপডিবিতে একটি 'DOMAIN \ ব্যবহারকারী 1' স্কিমা তৈরি করে।
  3. নতুন 'DOMAIN \ ব্যবহারকারী 1' স্কিমা ব্যবহার করে সেই সারণীগুলি তৈরি করে।

আমি এই ফলাফলগুলি দ্বারা সম্পূর্ণ বিস্মিত। আমার প্রশ্নগুলি এখানে:

  1. আমি অতিরিক্ত বস্তু তৈরির পরিবর্তে টেবিল তৈরির ব্যর্থতা আশা করব। কেউ কি আমাকে বই অনলাইন এর অংশের দিকে নির্দেশ করতে পারে যা এটি ব্যাখ্যা করে?
  2. সার্ভার কেন একটি 'DOMAIN \ অ্যাপ্লুউজার' স্কিমা তৈরি করে না এবং স্কিমায় যোগ করতে চলেছে যদি সেই স্কিমায় নতুন টেবিলগুলি যুক্ত করে না?
  3. এছাড়াও, কীভাবে ডাটাবেসগুলি এসএসএমএস \ সুরক্ষা \ লগইনগুলিতে প্রদর্শিত না হওয়া লগইন ব্যবহার করে?
  4. এসএসএমএস \ ডাটাবেসগুলি \ অ্যাপডিবি \ সুরক্ষা \ ব্যবহারকারীদের 'DOMAIN \ ব্যবহারকারী 1' ব্যবহারকারীর দিকে তাকিয়ে, ব্যবহারকারী আইকনটিতে একটি ছোট লাল তীরচিহ্ন দেখানো হয়েছে। ওটার মানে কি?

আমরা কেবলমাত্র এমন একটি সংস্থার মধ্যে উইন্ডোজ প্রমাণীকরণ ব্যবহার করা শুরু করেছি যা সরলতার জন্য এসকিউএল প্রমাণীকরণকে প্রাধান্য দেয়, তাই আমি নিশ্চিত যে আমার প্রশ্নটি পার্থক্য সম্পর্কে অজ্ঞ থাকার কারণে এসেছে। এই কোডটি উইন্ডোজ প্রমাণীকরণ ব্যবহারের বিবেচনা করার অনেক আগে লেখা হয়েছিল, তাই আমি নিশ্চিত যে ডাটাবেস মালিক ছাড়া অন্য যে কোনও হিসাবে উইন্ডোজ প্রমাণীকরণ ব্যবহার করে লগ ইন করার সময় নতুন স্কিম তৈরির বিষয়ে আমাদের আমাদের বোঝার উন্নতি করতে হবে I

আপনি যদি বলতে না পারেন তবে এসকিউএল প্রমাণীকরণের মাধ্যমে আমি উইন্ডোজ প্রমাণীকরণের জন্য চাপ দিচ্ছি। যদি আমরা এটির বিষয়ে দৃ understanding় ধারণা না পাই তবে আমরা এসকিউএল প্রমাণীকরণে ফিরে যাব।


আপনি ডিফল্ট স্কিমা {dbo সংজ্ঞা দিতে পারেন, উদাহরণস্বরূপ domain ডোমেন ব্যবহারকারীদের জন্য, তবে ডোমেন গোষ্ঠীগুলির জন্য নয়।

উত্তর:


9

এই সবসময়, ঘটেছে ফিরে SQL সার্ভার 2000 থেকে
স্কিমা ছাড়া, কিভাবে SQL সার্ভার জানে আপনি এটি আপনার মধ্যে লাগাতে চান dboস্কিমা?

ডিফল্ট স্কিমা নির্দিষ্ট করার একমাত্র উপায় হ'ল:

  • এসকিউএল লগইন ব্যবহার করুন (উইন্ডোজ নয়)
  • "সিসাদমিন" হিসাবে চালান

এগুলির কোনওটিই গ্রহণযোগ্য নয়

সেরা অনুশীলন হ'ল ডিডিএল এবং ডিএমএলের জন্য প্রতিটি বস্তুর রেফারেন্সের জন্য সর্বদা স্কিমা যোগ্যতা অর্জন করা। পরিকল্পনা পুনরায় ব্যবহারের কারণে স্পষ্ট পারফরম্যান্স সুবিধা রয়েছে।

এছাড়াও, SQL সার্ভার 2005 এর জন্য ইচ্ছাকৃত স্কিমা ব্যবহার আরও ভাল:

  • টেবিল ভিতরে Data
  • অন্যান্য টেবিল Archive, Stagingইত্যাদি
  • ক্লায়েন্ট অনুমতি প্রতি স্কিমের মধ্যে কোড: Desktop, WebGUIইত্যাদি

ডিবিও স্কিমা ব্যবহার এত শেষ মিলেনিয়াম :-) লিঙ্ক:


সুতরাং আমার এ থেকে দূরে সরিয়ে নেওয়া হচ্ছে আমাদের স্কিমার সাথে নতুন টেবিলের উপসর্গের কোডটি আপডেট করা উচিত, তাই না? এর অর্থ কি সুরক্ষিত নোডের নীচে নতুন ব্যবহারকারীর উপস্থিতি একটি সাধারণ ঘটনা?
ফ্লিপডব্বট

@ ফ্লিপডব্যাট: হ্যাঁ দু'জনেরই। একবার আপনি এটিতে and
োকার

একটি শেষ প্রশ্ন। যদি ব্যবহারকারীদের স্বয়ংক্রিয়ভাবে যুক্ত হওয়া এবং অবজেক্ট তৈরির সময় স্কিমার নির্দিষ্টকরণের সর্বোত্তম অনুশীলন হয়ে থাকে তবে স্বয়ংক্রিয়ভাবে তৈরি হওয়া ব্যবহারকারী নতুন স্কিমায় কোনও বিষয় অনুসন্ধান করতে ত্রুটি তৈরি করার আগে আপনি কীভাবে নতুন স্কিমাকে অধিকার দিতে পারেন? আমি 'DOMAIN \ ব্যবহারকারীর 1' সম্পর্কিত পোস্ট করা উদাহরণটি ব্যবহার করে, আমি 'DOMAIN \ অ্যাপ্লিকেশন ব্যবহারকারীদের' অ্যাকাউন্টে অ্যাক্সেস নির্ধারণ করতে পারি, তবে ক্যোয়ারীগুলি 'DOMAIN \ ব্যবহারকারীর 1' বা 'DOMAIN \ অ্যাপ্লিকেশন' ব্যবহারকারীর অ্যাক্সেস অধিকারগুলি ব্যবহার করবে? এটি ঠিক এতটাই ছদ্মবেশযুক্ত যে সার্ভারটি ব্যবহারকারী তৈরি করার সাথে সাথে অবজেক্টটি তৈরি হবে।
ফ্লিপডব্বট

অনুমতিগুলি স্কিমার মালিকের কাছে ডিফল্ট হবে যা ব্যবহারকারী 1। এটি স্কিমাটির জন্য DB_OWNER এর মতো
23:49

2

ভাল @gbn টাইপগুলি আমার চেয়ে দ্রুত ...

আমার একমাত্র অফারটি হ'ল ... আপনি উল্লেখ করেছেন যে ব্যবহারকারী অ্যাপটিতে লগইন করছে এবং এটি ব্যবহারকারীর টেবিল এবং এ জাতীয় তৈরি করতে দেয়। যদি অ্যাপ্লিকেশন এটির অনুমতি দিচ্ছে এবং ব্যবহারকারী নিজে এসকিউএল সার্ভারের মাধ্যমে এটি করছে না (এসএসএমএস ব্যবহার করে সরাসরি ডাটাবেসে লগইন করছে) তবে আপনাকে সেই অ্যাপ্লিকেশনটির বিক্রেতার সাথে চেক করতে হবে।


আমরা অ্যাপটি লিখেছি।
ফ্লিপডব্বট

2

যদিও প্রশ্নটি খুব পুরানো এবং এর ইতিমধ্যে স্বীকৃত উত্তর রয়েছে, আমি আপনার প্রশ্নের উত্তরগুলি আরও স্পষ্টভাবে (সাধারণ পরামর্শ দেওয়ার চেয়ে) উত্তর দেওয়ার চেষ্টা করব।

  1. আচরণটি "অন্তর্নিহিত স্কিমা এবং ব্যবহারকারীর সৃষ্টি" বিভাগে https://docs.microsoft.com/en-us/sql/t-sql/statements/create-schema-transact-sql তে নথিভুক্ত করা হয়েছে

  2. আপনি যদি কোনও নির্দিষ্ট স্কিমাতে অবজেক্টগুলি তৈরি করতে চান (যখন স্কিমাটি বিবৃতিতে স্পষ্টভাবে নির্দিষ্ট করা হয়নি), আপনার ব্যবহারকারীর জন্য DEFAULT_SCHEMA নির্দিষ্ট করা উচিত। এসকিউএল সার্ভার ২০০৮ আর 2 (এবং পূর্ববর্তী সংস্করণগুলিতে) আপনি যদি একটি উইন্ডোজ গ্রুপের উপর ভিত্তি করে কোনও ব্যবহারকারীকে একটি ডিএফএএলএল এসএসইইএমএ নির্ধারণ করার চেষ্টা করেন তবে এসকিউএল সার্ভার ২০১২ (এবং পরবর্তী সংস্করণগুলিতে) এটি এখন সম্ভব হয়েছে।

  3. এটি কেবল দেখানো হয়নি কারণ সেই ব্যবহারকারীর জন্য কোনও লগইন নেই। Https://docs.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql তে উল্লিখিত হিসাবে , অন্য কোনও গোষ্ঠী ব্যবহার করে বা এমনকি লগ ইন করা এমন ব্যক্তির জন্য ব্যবহারকারী তৈরি করা যেতে পারে যে কোনও লগইন

  4. ছোট লাল তীর (বা এসএসএমএসের নতুন সংস্করণে ছোট লাল এক্স) এমন কোনও ব্যবহারকারীকে উপস্থাপন করে যার কাছে ডাটাবেসে সংযোগের অনুমতি নেই (তবে, এই অনুমতিটি অন্য দলের মাধ্যমে প্রাপ্ত হতে পারে)।


0

যদিও এটি একটি পুরাতন প্রশ্ন আমি এই আচরণটি পর্যবেক্ষণ করেছি (এসকিউএল সার্ভারে 2014) এবং নিম্নলিখিতগুলি পেয়েছি:

স্ক্রিপ্ট দেওয়া হয়েছে

USE [master]
CREATE DATABASE [Test]

USE [Test]

-- Note that we create the users without specifying the default schema
CREATE USER [MyDomain\MyADGroup] FOR LOGIN [MyDomain\MyADGroup] -- ad group
CREATE USER [MyDomain\MyDomainUser] FOR LOGIN [MyDomain\MyDomainUser] -- ad user (not in said AD group)

ALTER ROLE db_ddladmin ADD MEMBER [MyDomain\MyADGroup]
ALTER ROLE db_ddladmin ADD MEMBER [MyDomain\MyDomainUser]

EXECUTE AS LOGIN = 'MyDomain\MyAdGroupUser' -- a windows account which is a member of [MyDomain\MyADGroup]

CREATE TABLE Test
(
    a INT
)

REVERT 

EXECUTE AS USER = 'MyDomain\MyDomainUser'

CREATE TABLE Test
(
    a INT
)

এই স্ক্রিপ্টটি টেস্ট নামে দুটি সারণী তৈরি করবে।

প্রথমটি CREATE TABLEএকটি সারণী তৈরি [MyDomain\MyAdGroupUser].[Test]করে এবং MyDomain\MyAdGroupUserস্কিমা তৈরি করে (পাশাপাশি একটি MyDomain\MyAdGroupUserডাটাবেস ব্যবহারকারী যা অক্ষম)

দ্বিতীয়টি CREATE TABLEএকটি টেবিল তৈরি করে[dbo].[Test]

এর কারণ হ'ল CREATE TABLEকমান্ডগুলি স্কিমাটি স্পষ্ট করে না, তারা ডিফল্ট স্কিমা ব্যবহার করবে।

ব্যবহারকারী তৈরি করার সময় আমরা ডিফল্ট স্কিমাটি নির্দিষ্ট না করায়, এসকিউএল সার্ভার উইন্ডোজ ব্যবহারকারীর ডিফল্ট স্কিমাটি ডিবিও হিসাবে সেট করে তবে উইন্ডোজ গ্রুপ ব্যবহারকারীর জন্য কোনও ডিফল্ট স্কিমা সেট করে না এবং ফলে এটি স্কিমা / ব্যবহারকারী তৈরির কারণ হয়ে দাঁড়ায়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.