কোনও এসকিউএল সার্ভার ২০০৮ আর 2 ডাটাবেসে সমস্ত অনাথ ব্যবহারকারীকে 'অটো_ফিক্স' দেওয়ার ছোট্ট উপায় আছে?


16

এটি ব্যবহার করে লগইনে একটি একা অনাথ এসকিউএল ব্যবহারকারীকে ঠিক করার জন্য মোটামুটি সোজা এগিয়ে রয়েছে:

এক্সইসি এসপি_চেঞ্জ_উসারস_লগিন 'অটো_ফিক্স', 'ব্যবহারকারী'

আমি এটি স্ক্রিপ্ট করতে পারলাম, তবে কি কোনও বিদ্যমান সঞ্চিত পদ্ধতি রয়েছে যা স্বয়ংক্রিয়ভাবে কোনও অনাথ ব্যবহারকারীকে একটি প্রদত্ত ডাটাবেসে স্থির করার চেষ্টা করে?

উত্তর:


15

টেড ক্রুয়েজার ( টুইটারে অন্ট ) একটি দুর্দান্ত স্ক্রিপ্ট লিখেছিলেন যা এটি করে। এটি কোনও ব্যবহারকারীর জন্য লগইন ছাড়াই লগইন যুক্ত করে এবং অটো_ফিক্স চালায়। এমনকি তিনি এমন একটি লিখেছিলেন যাতে উইন্ডোজ লগইনগুলি ঠিক করা অন্তর্ভুক্ত রয়েছে:

http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/fixing-orphaned-database-users

অবশ্যই আপনি যদি প্রথমে এটি পরীক্ষা করতে চান (বা নিখুঁতভাবে একটি নিরীক্ষা করেন) আপনি ক্রিয়া লাইনগুলি মন্তব্য করতে পারেন ( EXEC) এবং কেবল ফলাফলগুলি মুদ্রণ করতে পারেন।


2

নীচে একটি সাধারণ স্ক্রিপ্ট যা কাজটি পুরোপুরি করে -

USE DBNAME     ----- change db name for which you waant to fix orphan users issue

GO


declare @name varchar(150)

DECLARE cur CURSOR FOR
    select name from master..syslogins

Open cur

FETCH NEXT FROM cur into @name

WHILE @@FETCH_STATUS = 0
BEGIN

    EXEC sp_change_users_login 'AUTO_FIX', @name

    FETCH NEXT FROM cur into @name

END

CLOSE cur
DEALLOCATE cur

2

উপরের স্ক্রিপ্টের ভিত্তিতে, আমরা sp_MSForeachdb এর মতো ব্যবহার করে সমস্ত ব্যবহারকারীর একটি ইনস্ট্যান্সে স্থির করতে পারি

declare @name varchar(150)
declare @query nvarchar (500)

DECLARE cur CURSOR FOR
    select name from master..syslogins

Open cur

FETCH NEXT FROM cur into @name

WHILE @@FETCH_STATUS = 0
BEGIN

set @query='USE [?]
IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb''
BEGIN   
exec sp_change_users_login ''Auto_Fix'', '''+ @name +'''
END'

EXEC master..sp_MSForeachdb @query

    FETCH NEXT FROM cur into @name

END

CLOSE cur
DEALLOCATE cur

আশা করি এটি সাহায্য করবে


ভাল, আমি এটির মতো ব্যাখ্যা করতে পারি: 1 সিসলোগিনগুলিতে প্রতিটি লগইন আনুন, 2 টি পুনরায় মানচিত্র ব্যবহারকারী (স্কোপটি ডাটাবেস স্তর) এবং লগইন (স্কোপ উদাহরণস্বরূপ) প্রতিটি ডাটাবেসের জন্য
Phú Nguyễn

0

এটি dbatools কমান্ডটি মেরামত-DbaDbOrphanUser ব্যবহারের জন্য দুর্দান্ত ব্যবহারের বিষয় হবে

প্রথমে আপনি অনাথ ব্যবহারকারীদের সনাক্ত করতে পারেন

Get-DbaDbOrphanUser -SqlInstance $sqlinstance

ComputerName : SQL01
InstanceName : MSSQLSERVER
SqlInstance  : SQL01
DatabaseName : SockFactoryApp
User         : SockFactoryApp_User

এবং তারপরে এগুলি সমাধান করুন

Repair-DbaDbOrphanUser -SqlInstance $sqlinstance

ComputerName : SQL01
InstanceName : MSSQLSERVER
SqlInstance  : SQL01
DatabaseName : SockFactoryApp
User         : SockFactoryApp_User
Status       : Success
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.