SQL Server'da Tüm Kolonların Collation'ını Değiştirme

Paylaş

SQL Server üzerinde veritabanının Collation’ını değiştirdiğiniz zaman Collation kolonlarda değişmeyebilir. SQL Server Management Studio’da tablo düzenlemesinden değiştirmek istediğinizde eğer tablo üzerinde veri varsa hata mesajıyla karşılaşacaksınız. Aşağıda bulunan T-SQL sorgusu veritabanındaki tüm tabloların tüm kolonlarının Collation’larını değiştirmektedir.

DECLARE @collate nvarchar(100);
DECLARE @table nvarchar(255);
DECLARE @column_name nvarchar(255);
DECLARE @column_id int;
DECLARE @data_type nvarchar(255);
DECLARE @max_length int;
DECLARE @row_id int;
DECLARE @sql nvarchar(max);
DECLARE @sql_column nvarchar(max);
 
SET @collate = 'Turkish_CI_AI';
 
DECLARE local_table_cursor CURSOR FOR
 
SELECT [name]
FROM sysobjects
WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1
 
OPEN local_table_cursor
FETCH NEXT FROM local_table_cursor
INTO @table
 
WHILE @@FETCH_STATUS = 0
BEGIN
 
DECLARE local_change_cursor CURSOR FOR
 
SELECT ROW_NUMBER() OVER (ORDER BY c.column_id) AS row_id
, c.name column_name
, t.Name data_type
, c.max_length
, c.column_id
FROM sys.columns c
JOIN sys.types t ON c.system_type_id = t.system_type_id
LEFT OUTER JOIN sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = OBJECT_ID(@table)
ORDER BY c.column_id
 
OPEN local_change_cursor
FETCH NEXT FROM local_change_cursor
INTO @row_id, @column_name, @data_type, @max_length, @column_id
 
WHILE @@FETCH_STATUS = 0
BEGIN
 
IF (@max_length = -1) SET @max_length = 4000;
 
IF (@data_type LIKE '%char%')
BEGIN TRY
SET @sql = 'ALTER TABLE ' + @table + ' ALTER COLUMN ' + @column_name + ' ' + @data_type + '(' + CAST(@max_length AS nvarchar(100)) + ') COLLATE ' + @collate
PRINT @sql
EXEC sp_executesql @sql
END TRY
BEGIN CATCH
PRINT 'ERROR: Some index or contraint rely on the column' + @column_name + '. No conversion possible.'
PRINT @sql
END CATCH
 
FETCH NEXT FROM local_change_cursor
INTO @row_id, @column_name, @data_type, @max_length, @column_id
 
END
 
CLOSE local_change_cursor
DEALLOCATE local_change_cursor
 
FETCH NEXT FROM local_table_cursor
INTO @table
 
END
 
CLOSE local_table_cursor
DEALLOCATE local_table_cursor
 
GO

@collate değişkenine kullanmak istediğiniz Collation değeriyle değiştirmeniz yeterlidir.

SQL Server’ın desteklediği Collation’ları listelemek için aşağıdaki T-SQL sorgusunu çalıştırmanız yeterlidir.

SELECT name, COLLATIONPROPERTY(name, 'CodePage') as Code_Page, description FROM sys.fn_HelpCollations()

Devamını oku

Loglama Yanıtı Bozarsa: .NET 11 HttpLogging’de ArrayPool Hatası

Loglama Yanıtı Bozarsa: .NET 11 HttpLogging’de ArrayPool Hatası

Bir loglama middleware'i, uygulamanızın ürettiği yanıtı değiştirebilir mi? Çoğumuzun cevabı muhtemelen "hayır" olur. Biz de öyle düşünüyorduk. Şirketimizde servislerimizi .NET 11'e taşımak için gerekli geliştirmeleri yaptık. Happy path senaryolarını test ettiğimizde herhangi bir problem görmedik. Ardından servis genelinde bir sorun olup olmadığını anlamak için

Mennan Köse tarafından
.NET Core'da Custom Feature Flag Provider Geliştirme

.NET Core'da Custom Feature Flag Provider Geliştirme

Merhabalar 👋 Bu yazımda .NET Core'da feature'ları yönetebildiğimiz kütüphane olan FeatureManagement kütüphanesinden ve feature ayarlarımızı saklayabileceğimiz farklı alanlardan bahsedeceğim. Bazen geliştirdiğimiz özellikleri canlı ortama almışken o özelliklerin kapalı gelmesini ve zamanı geldiği zaman açmak isteyebiliriz. Bu tip operasyonları yönetmek için .NET Core'da FeatureManagement kütüphanesinden yararlanıyoruz.

Mennan Köse tarafından
Mountebank ile API Dönüşlerinin Mocklanması

Mountebank ile API Dönüşlerinin Mocklanması

Merhabalar. Bu yazımda geliştirmiş olduğumuz uygulamaların iletişime geçtiği API'ların dönüşlerinin (response) nasıl mocklanacağından bahsedeceğim. Şöyle bir senaryoyu düşünelim. Bir Front-End uygulaması üzerinden (React, Vue veya Angular ile geliştirilmiş) bir API uygulamasına istek atıyoruz. Front-End uygulamamızın testlerini yazarken API uygulamasının da ayakta ve istediğimiz cevapları vermesini beklemekteyiz.

Mennan Köse tarafından