Для тестирования мне нужно искусственно создать медленный оператор SQL. Мне удалось достичь этого на Oracle/Java (подробнее см. Ниже), но я стараюсь добиться того же результата в T-SQL/VB.Net/SQLServer.Функция SQL Server Вызов CLR для сна
Идея состоит в том, чтобы иметь функцию, которая просто спит для нескольких (скажем, 5) секунд и возвращает фиктивное значение.
Я попробовал (как альтернативу) использовать «waitfor» T-SQL, но это не разрешено в FUNCTIONS (по-видимому, побочные эффекты); поэтому я думаю (кроме создания огромных таблиц или вращающихся вложенных пустых петель), лучший способ сделать это - через объекты CLR ....
Может ли кто-нибудь выполнить некоторые простые шаги для достижения этого?
Вот шаги, которые я ниже в Oracle: Первый Создание класса Java, чтобы сделать сон:
package com.monojohnny;
public class sleepy {
public static String sleep() {
int seconds=5;
try {
Thread.sleep(seconds * 1000);
}
catch(Exception e) { ; }
return "Finished Sleeping for "+Integer.toString(seconds)+" seconds.";
}
}
Во-вторых, скомпилировать его с чем-то вроде:
javac -source 1.4 -target 1.4 com/monojohnny/sleepy.java
В-третьих, загрузите result.class в Oracle DB:
call loadjava -user %username%/%password% com\monojohnny\sleepy.class
Наконец, cre съел PL/SQL функцию для вызова метода в классе:
CREATE OR REPLACE FUNCTION sleepy RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'com.monojohnny.sleepy.sleep() return java.lang.String';
/
show errors
quit;
И это результат тестирования функции:
SQL> select sleepy from dual;
Finished Sleeping for 5 seconds
Спасибо за это - но что такое «DW»? Я не могу заставить это работать на моем экземпляре SQL Server Express? Ошибка: Msg 7202, уровень 11, состояние 2, ожидание процедуры, строка 7 Не удалось найти сервер 'DW' в sys.servers. Убедитесь, что указано правильное имя сервера. Если необходимо, выполните хранимую процедуру sp_addlinkedserver, чтобы добавить сервер в sys.servers. – monojohnny
«DW» - это связанное имя сервера. Запустите «sp_linkedservers», чтобы узнать, настроены ли вы. У вас не будет «DW», но у вас наверняка будут другие. –
Привет, Кевин, но какова цель Linked Server? Я пытаюсь избежать любых дополнительных изменений в БД - кроме создания функции - и, возможно, загрузки .NET-программы действительно ... – monojohnny