Да, генерировать скрипты печально сценариев столбцов datetime как CONVERT (двоичное_значение, Datetime). Я попытаюсь получить ответ о том, почему (или, что более важно, если есть способ изменить поведение). Я подозреваю, что причина заключается в том, чтобы избежать каких-либо проблем с запуском скриптов на другой машине с разными языковыми/региональными настройками и т. Д. Я не знаю, есть ли способ изменить это из того, что происходит в то же время, но Management Studio не является только способ сценариев ваших данных ... вы можете посмотреть на сторонние продукты, такие как SQL Data Compare от Red-Gate.
Если это действительно всего 3000 строк, и вы намерены запустить сгенерированный скрипт на другом сервере, прекратите использовать мастер и сделайте это (на первый взгляд это выглядит ужасно, но он делает несколько вещей, которые вам понадобятся - выводит скрипт, готовый к копированию, вставке и запуску, с красиво отформатированными и читаемыми датами, вставляет в многострочные значения VALUES на 1000 с командами GO между ними и даже имеет дело с потенциально значениями NULL в заголовке, субтитрах и сборке):
DECLARE @newtable SYSNAME = 'dbo.NewComics';
SET NOCOUNT ON;
;WITH x AS (SELECT TOP (4000) s = '('
+ CONVERT(VARCHAR(12), NewComicId) + ','
+ COALESCE('N''' + REPLACE(RTRIM(Title), '''', '''''') + '''', 'NULL') + ','
+ COALESCE('N''' + REPLACE(RTRIM(SubTitle), '''', '''''') + '''', 'NULL')
+ ', ''' + CONVERT(CHAR(8), ReleaseDate, 112) + ' '
+ CONVERT(CHAR(8), ReleaseDate, 108) + ''','
+ CONVERT(VARCHAR(12), COALESCE(CollectionId, 'NULL')) + ')',
rn = ROW_NUMBER() OVER (ORDER BY NewComicId)
FROM dbo.OldComics ORDER BY NewComicId
),
y AS
(
SELECT [/*a*/] = 1, [/*b*/] = 'SET NOCOUNT ON;
GO
INSERT ' + @newtable + ' VALUES'
UNION ALL
SELECT 2, s = CASE WHEN rn > 1 THEN ',' ELSE '' END + s
FROM x WHERE rn BETWEEN 1 AND 1000
UNION ALL
SELECT 3, 'GO' UNION ALL
SELECT 4, s = CASE WHEN rn > 1001 THEN ',' ELSE '' END + s
FROM x WHERE rn BETWEEN 1001 AND 2000
UNION ALL
SELECT 5, 'GO' UNION ALL
SELECT 6, s = CASE WHEN rn > 2001 THEN ',' ELSE '' END + s
FROM x WHERE rn BETWEEN 2001 AND 3000
UNION ALL
SELECT 7, 'GO' UNION ALL
SELECT 8, s = CASE WHEN rn > 3001 THEN ',' ELSE '' END + s
FROM x WHERE rn BETWEEN 3001 AND 4000
)
SELECT [/*b*/] FROM y ORDER BY [/*a*/];
(Возможно, вам придется играть с ним, если у вас ровно 3000 или 3001 строк, или добавить еще пару союзов, если у вас более 4000 и т. Д.)
Если вы перемещаете данные в другую таблицу или другую базу данных в одном экземпляре, используйте сценарий, предоставленный @swasheck (и снова прекратите использование мастера).
Возможно, вы заметили общую тенденцию: прекратите использование мастера генерации скриптов, если вам не нравится бинарный формат, который он выводит для дат.
Куда деваются данные? Что такое версия SQL Server? Версия? Вы должны иметь возможность выполнять задачи> Экспортировать данные и выгружать их в плоский файл, excel или какое-либо другое соединение. – swasheck
Я просто хочу сделать снимок и создать файл SQL для всей базы данных с вышеуказанными требованиями. Я использую SQL Management Studio 2012. – Sniffer
Итак, вы говорите, что хотите очистить данные? – swasheck