شاید براتون پیش اومده باشه به عنوان ادمین بخواهید Collation در سطح سرور رو عوض کنید ( یعنی هم دیتابیس های سیستمی و هم غیر سیستمی ) خیلی مهمه !!!!
یعنی تمام جداول عوض میشن ، پس با احتیاط استفاده کنین
اگر به ترتیب مراحل زیر عمل کنید میتونید اینکار رو انجامش بدید ، لازم هست بدونین که باید سرویس اس کیو ال رو استاپ کنین و برای عدم بوجود اومدن مشکل غیر تایم اداری این کار رو انجام بدین
1. اول CMD رو با دسترسی ادمین بالا بیارید
2. توی محیط کامند پرامپت برای استاپ سرویس اس کیو ال دستور زیر رو تایپ و اجرا کنین
net stop “MSSQLSERVER”
3. توی محیط کامند پرومت برای وارد شدن به پوشه ای که فایل EXE اس کیو ال قرار داره از دستور زیر استفاده میکنیم البته برای سازمان ما چون ورژن اس کیو ال 2019 هست ولی اگر سازمان شما ورژنش پایین تر هستش با توجه به جدول زیر میتونین اسم پوشه رو عوض کنین
cd C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn
4. ?حالا مرحله بعدی دستور زیر رو تایپ میکنیم چون ممکنه اینستنس دیگه ای هم داشته باشین ، البته من پیش فرض خود اس کیو ال رو اجرا کردم dir sql*.exe
5. با توجه به خروجی دستور بالا ، دستور زیر رو تایپ می کنیم
sqlservr -m -T4022 -T3659 -s"SQL2019" -q" Persian_100_CI_AI"
پارامتر های دستور بالا رو میتونین این پایین ببینین
[-m] single user admin mode
[-T] trace flag turned on at startup
[-s] sql server instance name
[-q] new collation to be applied
اگر اینستنس دیگه ای ( SQL2019 ) ندارین و همون پیش فرض اس کیو ال هستش میتونین از -s استفاده نکنین
sqlservr -m -T4022 -T3659 -q" Persian_100_CI_AI"
در این مثال از 2 تا تریس فلگ استفاده شده
پس از چند دقیقه پیام زیر نمایش داده میشه
در آخر کار با زدن دکمه های ترکیبی Ctrl + C و تایید y خارج میشین
حالا وقتشه که برگردین به سیستم 32 با دستور زیر و بعدش سرویس اس کیو ال رو استارت کنین
cd C:\Windows\system32\
net start “MSSQLSERVER”
و در نهایت سرویس هم با پیام زیر با موفقیت استارت شد
الان میتونین با اجرای اسکریپت زیر نتیجه کارتون رو ببینین
drop table if exists #TMP
create table #TMP(COLUMN_NAME nvarchar(200),COLLATION_CATALOG nvarchar(200),COLLATION_SCHEMA nvarchar(200),COLLATION_NAME nvarchar(200), [DB_ID] bigint )
exec sp_MSforeachdb ' use [?];
insert into #TMP
select COLUMN_NAME,COLLATION_CATALOG,COLLATION_SCHEMA,COLLATION_NAME , DB_ID()
from INFORMATION_SCHEMA.COLUMNS
where DATA_TYPE in (''varchar'',''char'',''nchar'',''nvarchar'')
'
select * from #TMP
من لذت بردم و تصمیم گرفتم با شما دوستان عزیز به اشتراک بزارم
منبع :
https://www.mssqltips.com/sqlservertip/3519/changing-sql-server-collation-after-installation/