Я хотел бы использовать пользовательские типы, которые могут быть созданы на сборке .NET, а затем импортированы на SQL Server для выполнения прозрачной операции, например, для шифрования. Шифрование будет обрабатываться в методе Parse
во время дешифрования в методе ToString
. Это будет изменение рабочей системы, поэтому я бы не хотел изменять код, который уже использует эти таблицы.Полностью прозрачные типы CLR в SQL Server
Учитывая У меня есть следующая таблица, где EncryptedString тип .NET:
CREATE TABLE dbo.EncryptedStrings
(ID int IDENTITY(1,1) PRIMARY KEY, EncryptedStringValue EncryptedString)
можно затем вставить значения в эту таблицу, как это обычная строка столбец - существующий код может быть сохранен (метод Анализировать в .NET-коде выполняется - который выполняет шифрование в моем случае).
INSERT INTO dbo.EncryptedStrings (EncryptedStringValue) VALUES ('AAA');
INSERT INTO dbo.EncryptedStrings (EncryptedStringValue) VALUES ('BBB');
Но, когда я делаю простой SELECT
:
SELECT * FROM dbo.EncryptedStrings
Затем я получаю двоичный упорядоченное представление, как:
Мне нужно явно вызвать ToString или CAST
оно до VARCHAR
, чтобы выполнить ToString:
SELECT ID, EncryptedStringValue.ToString() FROM EncryptedStrings
Есть ли способ настроить сервер так, чтобы он всегда показывал представление ToString, и следующие запросы SELECT, всегда возвращаются одни и те же результаты?
SELECT ID, EncryptedStringValue FROM dbo.EncryptedStrings
SELECT ID, EncryptedStringValue.ToString() FROM EncryptedStrings
Вы говорите, что шифрование является * примером * того, что вы хотите сделать. Для шифрования, почему недостаточно встроенных прозрачных средств шифрования данных. Для чего-то другого, кроме шифрования, в чем польза от использования этого типа CLR, который для всех целей запроса просто напоминает «varchar»? –
@Damien_The_Unbeliever Я хотел, чтобы он выглядел как varchar, но для выполнения моей логики при вставке и запросе. На какие встроенные средства прозрачного шифрования вы ссылаетесь? – nan
Это, вероятно, будут встроенные функции, которые были в sql-сервере с 2005 года. Http://technet.microsoft.com/en-us/library/ms179331(v=sql.90).aspx – dav1dsm1th