Сообщения

SQL SERVER. Поиск символа CHAR(39) во всех таблицах.

           При создании отчетов в программном обеспечении возникла проблема с символом CHAR(39) в тексте. Возникла задача найти все таблицы и колонки, которые  содержат этот символ. Скрипт поиска по всем таблицам был найден очень давно. Но его пришлось чуть доработать: добавить информацию по схемам и задать поиск именно одного апострофа в поле. SET NOCOUNT ON DECLARE @name VARCHAR (128), @column VARCHAR (128), @schema   VARCHAR (128), @sql VARCHAR ( MAX ) CREATE TABLE #rslt (table_name VARCHAR (128), field_name VARCHAR (128), value NTEXT ) DECLARE s CURSOR FAST_FORWARD FOR SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE' OPEN s FETCH NEXT FROM s INTO @schema, @name WHILE @@fetch_status = 0 BEGIN   DECLARE c CURSOR FAST_FORWARD FOR SELECT quotename (column_name) AS column_name FROM information_schema.columns   WHERE data_type IN ( 'TEXT' , 'NTEXT' , 'VARCHAR...

SQL SERVER. Error Database is in Transition

Изображение
При переводе состояния базы данных в SET OFFLINE происходит такая ошибка: "Database is in Transition"  и далее практически ничего сделать не даёт. Пришлось уже выходить из положения обходными способами. Находим database_id (у меня 32): USE [master] SELECT [database_id] FROM sys.databases  WHERE [name] = 'DB_TEST' В другой сессии пробуем  пробуем вывысти базу данных в состояние OFFLINE^ ALTER DATABASE [DB_TEST] SET OFFLINE WITH ROLLBACK IMMEDIATE В третьей сессии с помощью sp_lock находим сессии, которые относятся к базе данных [DB_TEST] : Выполняем KILL этих сессий  KILL 146 до тех пор пока во 2-й сессии получится вывести базу данных OFFLINE.

SQL Server. Проблема с разделителем дробной части числовых данных при запросе данных через Linked Server

Изображение
             На днях состоялся перенос базы данных с одного физического сервера на другой. Параметры нового сервера: Windows Server русская версия, SQL Server 2008 R2 English Edition, Oracle Client 11.2.0.4. При работе с данными обнаружился казус: данные типа NUMBER с СУБД Oracle через Linked Server запрашиваются корректно: Если же попытаться сделать INSERT в таблицу  MS SQL Server, то разделитель дробной части игнорируется: Исправляется подобное добавлением строкового параметра NLS_NUMERIC_CHARACTERS в ветку реестра со значением ".,":