محمدرضا عباسی فرهادلو
محمدرضا عباسی فرهادلو
خواندن ۲ دقیقه·۲ سال پیش

تغییر کولیشن در سطح سرور

شاید براتون پیش اومده باشه به عنوان ادمین بخواهید 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 تا تریس فلگ استفاده شده

  • T4022: Trace Flag 4022: Bypass startup procedures in SQL Server.
  • T3569: Trace Flag 3569: Enables logging all errors to errorlog during server startup.

پس از چند دقیقه پیام زیر نمایش داده میشه


در آخر کار با زدن دکمه های ترکیبی 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/



sql serverpersian collationcollationdbasqlserver
مدیر پایگاه داده انتشارات بین المللی گاج
شاید از این پست‌ها خوشتان بیاید