пользовательские функции - PullRequest
0 голосов
/ 28 октября 2009

У меня есть эта пользовательская функция.

public partial class UserDefinedFunctions
{
    static int i;
    [SqlFunction(IsDeterministic = true)]
    public static SqlSingle f()
    {
        return new SqlSingle(1.3F);
    }
};

Но это работает, только если i только для чтения. Почему?

1 Ответ

2 голосов
/ 28 октября 2009

Это также «работает», если чтение-запись.

Если под словом «не работает» вы подразумеваете, что сборка не может быть установлена ​​в SQL, поскольку она содержит статическое поле, использование статических переменных класса опасно по причинам, объясненным в CLR Hosted Environment :

Учитывая эти соображения, мы препятствовать использованию статических переменных и статические данные членов классов используется в SQL Server. Для SAFE и EXTERNAL_ACCESS сборок, SQL Server исследует метаданные сборки в CREATE ASSEMBLY раз и терпит неудачу создание таких сборок, если это находит использование статических членов данных и переменные.

Отметьте свою сборку как UNSAFE как знак того, что вы понимаете риски, связанные со статическими переменными, и SQL примет вашу сборку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...