Экспертные советы по переходу на новую версию Microsoft SQL Server 2005

Содержание

Слайд 2

План

Немного о Microsoft.com
Планирование перехода
Upgrade Advisor
Анализ скриптов
Анализ показателей производительности до и после

План Немного о Microsoft.com Планирование перехода Upgrade Advisor Анализ скриптов Анализ показателей
перехода
Реализация / Уроки

Слайд 3

Видение, Стратегия & Инициативы

Видение: Обеспечить наивысшую доступность ресурсов при демонстрации технологий Microsoft

Видение, Стратегия & Инициативы Видение: Обеспечить наивысшую доступность ресурсов при демонстрации технологий

Стратегия: Использовать продукты Microsoft, обеспечить обратную связь при демонстрации возможностей операционной поддержки

Слайд 4

Internet Hosting Немного фактов

3 Internet центра обработки данных
2 Сети доставки контента
Наши партнеры

Internet Hosting Немного фактов 3 Internet центра обработки данных 2 Сети доставки
Akamai Technologies, Inc & SAVVIS, Inc
1750 серверов в центрах обработки данных
508+ серверов в лабораториях (Разработка ? опытная эксплуатация)
109 Web сайтов, 2516 DBs, 1000’и Приложений
80+ Gigabit/sec Bandwidth

Слайд 5

Доступность по информации от Keynote Systems

Ежедневный мониторинг

В: А кто это такие Keynote?
A:

Доступность по информации от Keynote Systems Ежедневный мониторинг В: А кто это
Компания, занимающаяся глобальным мониторингом
В: Как мы используем данные?
A: Анализ в реальном времени & Тренд
* За 3 года наблюдений Microsoft.com демонстрирует наивысшую доступность

5/30/05

Слайд 6

Архитектура высокой доступности Web & Database Hosting

Network Load Balancing (NLB) кластеры
Размер кластера:

Архитектура высокой доступности Web & Database Hosting Network Load Balancing (NLB) кластеры
3 – 8 Серверов на кластер
Плюсы: Легко управлять и не требует закупки компонентов (встроено в Windows)
Проблемы: Накладные расходы на переключение & Обеспечение Connection Affinity
Конфигурации серверов
Идентичные базовые конфигурации O/S, IIS, ASP.NET
Код приложения и контент уникальны для каждого сайта
Стандартные хостинг модели
Гибкость = Легко переместить приложение между системами
Эффективность = Нужно меньше персонала и оборудования
Однородные конфигурации
Повторяемая архитектура

Слайд 7

Database Driven Sites

Windows Update v5 - http://v5.windowsupdate.microsoft.com
Download Center – http://www.microsoft.com/downloads
MSDN –

Database Driven Sites Windows Update v5 - http://v5.windowsupdate.microsoft.com Download Center – http://www.microsoft.com/downloads
http://msdn.microsoft.com
Communities - http://www.microsoft.com/communities
MS-I (Customer database) – http://profile.microsoft.com
ICP (Internet Content Providers) – http://www.microsoft.com
Subsidiary Sites - http://www.microsoft.com/japan/Subsidiary Sites - http://www.microsoft.com/japan/, http://www.microsoft.com/spain
Other Sites – http://www.microsoft.com/careersOther Sites – http://www.microsoft.com/careers, http://www.microsoft.com/hardware
PENS (Personalized Electronic Newsletter Service)
Электронный письма (security bulletin, executive email, marketing и т.п.).
Не виден снаружи
Использует SQL Server Notification Services
Windows Metadata Internet Services – www.windowsmedia.com
Многие другие

Слайд 8

Рабочие БД

As of Jan 4 2006

*(не включая административные БД)

Рабочие БД As of Jan 4 2006 *(не включая административные БД)

Слайд 9

Производственные БД

As of Jan 4 2006

Производственные БД As of Jan 4 2006

Слайд 10

Стандарты БД Кодирование & конфигурация серверов

Конфигурация серверов
В соответствии со стандартами MSN Datacenter (гибкость)
Microsoft

Стандарты БД Кодирование & конфигурация серверов Конфигурация серверов В соответствии со стандартами
IT SQL IPAK (стандартная конфигурация)
Все серверы устанавливаются скриптами
Стандарты Microsoft.com
Инструменты и мониторинг (MOM, Cluster Sentinel, SQL Litespeed)
Стандарты кодирования БД
Короткий перечень требований и длинный перечень Best Practices
Тестирование и выпуск через Release Management перед развертыванием
Весь код БД проходит анализ администраторами перед выпуском
Медленный код может привести к недоступности приложения

Слайд 11

Database Server Hardware

Практически только HP
Стандартная конфигурация «железа»
Все серверы имеют сходную конфигурацию дисков

Database Server Hardware Практически только HP Стандартная конфигурация «железа» Все серверы имеют
(в зависимости от размера сервера)
Серверы под SQL Server строятся с высоким уровнем избыточности
Компоненты могут использоваться повторно даже после окончания гарантии на сервер
Исключения
Для особо крупных инсталляций SQL Servers используется SAN (обычно direct attach storage)

Слайд 12

Hardware Platform Сравнение: 32 и 64 bit

Основные положения
Стоимость оборудования – x64 стоит

Hardware Platform Сравнение: 32 и 64 bit Основные положения Стоимость оборудования –
дешевле (если считать по серверам)
Оборудование способно исполнять x86 и x64 O/S
Большие возможности CPU и памяти облегчают консолидацию или перемещение оборудования
64-bit H/W и Windows дают несомненное преимущество

Слайд 13

Интегрированный мониторинг

Интегрированный мониторинг

Слайд 14

План

Немного о Microsoft.com
Планирование перехода
Upgrade Advisor
Анализ скриптов
Анализ показателей производительности до и после

План Немного о Microsoft.com Планирование перехода Upgrade Advisor Анализ скриптов Анализ показателей
перехода
Реализация / Уроки

Слайд 15

Upgrade Advisor (UA)

Microsoft IT использует UA для анализа обновляемой инсталляции SQL Server
Если

Upgrade Advisor (UA) Microsoft IT использует UA для анализа обновляемой инсталляции SQL
используется «отмершая» функциональность можно скорректировать приложение перед обновлением
UA способен определить и отобразить изменения в конфигурации, которые будут сделаны в процессе обновления
UA анализирует сервер, на котором исполняется SQL Server и предоставляет отчет о проблемах в следующих компонентах:
Database Engine
Analysis Services
DTS
SQL Server Agent
Full-Text Search
Notification Services
Replication
Reporting Services
UA отмечает проблемные места и предоставляет ссылку на документацию

Слайд 16

Стратегия обновления

Анализ результатов использования Upgrade Advisor
Для заказчиков
Облегчает процесс принятия решения
Позволяет определить наименее

Стратегия обновления Анализ результатов использования Upgrade Advisor Для заказчиков Облегчает процесс принятия
болезненный путь обновления
Иные ситуации
Новые приложения
Разработка и выпуск приложений – уточнение графиков
Прямое обновление – высокая степень обратной совместимости

Слайд 17

План

Немного о Microsoft.com
Планирование перехода
Upgrade Advisor
Анализ скриптов
Анализ показателей производительности до и после

План Немного о Microsoft.com Планирование перехода Upgrade Advisor Анализ скриптов Анализ показателей
перехода
Реализация / Уроки

Слайд 18

Тестирование приложений Варианты

Развертывание SS2k5 в тестовой среде
Процесс управляется группами разработки и тестирования
Как

Тестирование приложений Варианты Развертывание SS2k5 в тестовой среде Процесс управляется группами разработки
обеспечить нагрузку?
Совместная работа с группой тестирования
При соблюдении их интересов
Тестирование на воспроизведении рабочей нагрузки
Trace for Replay
Profiler и Sysmon

Слайд 19

Тестирование приложений Проблемы развертывания

Отличия в «железе»
Отсутствие полного комплекса в тестовой среде
Тестировать по

Тестирование приложений Проблемы развертывания Отличия в «железе» Отсутствие полного комплекса в тестовой
частям или вместе
Создание достоверных тестов, дающих полезные результаты
Идентификация выраженных отличий в производительности
Особенности тестирования горизонтально масштабированных систем

Слайд 20

Уроки: тестирование

Правильно выбранный момент очень важен: для воспроизведения следует выбирать критические уровни

Уроки: тестирование Правильно выбранный момент очень важен: для воспроизведения следует выбирать критические
нагрузки
БД следует восстанавливать на соответствующий момент времени
Графическое представление отличий не так точно, но все равно полезно
Результаты профилирования/ мониторинга следует хранить в таблице для облегчения анализа

Слайд 21

План

Немного о Microsoft.com
Планирование перехода
Upgrade Advisor
Анализ скриптов
Анализ показателей производительности до и после

План Немного о Microsoft.com Планирование перехода Upgrade Advisor Анализ скриптов Анализ показателей
перехода
Реализация / Уроки

Слайд 22

Стандарты архитектуры Мы по-прежнему используем разработанные ранее архитектуры «от добра добра не ищут»

Имея

Стандарты архитектуры Мы по-прежнему используем разработанные ранее архитектуры «от добра добра не
такое количество серверов не уйти от стандартизации
Стандартные архитектуры подтвердили свое качество и с ними проще обеспечить доступность услуг
Позволяют сфокусироваться на приложении
Нестандартные конфигурации есть, но тщательно задокументированы

Слайд 23

Сценарий 1: Одиночный сервер

Где это возможно
Некритичные данные
Данные изменчивы и легко восстанавливаются
Где

Сценарий 1: Одиночный сервер Где это возможно Некритичные данные Данные изменчивы и
применяется
Некоторые приложения, для внутреннего использования
Внутренняя система отчетности

Слайд 24

Сценарий 2: Резервный сервер (Log Shipping)

За
Вторичный сервер полностью независим от основного
Может располагаться

Сценарий 2: Резервный сервер (Log Shipping) За Вторичный сервер полностью независим от
на значительном удалении (желательно иметь быструю связь)
Против
Переход на вторичный сервер требует переименования сервера –ИЛИ - клиент должен уметь менять строку подключения
При неожиданном падении основного сервера возможна потеря данных
Отдельные мероприятия по синхронизации учетных записей
Где применяется
Microsoft Search
БД ICP (Internet Content Providers), открытые на запись
Microsoft Product Information Catalog
Microsoft Shop

Слайд 25

Сценарий 3: Log Shipping & NLB

За
VIP (Virtual IP) выставляет в сеть единственное

Сценарий 3: Log Shipping & NLB За VIP (Virtual IP) выставляет в
имя
Проще обслуживать серверы
Подходит для систем с модификаций денных
Против
NLB ничего не знает о SQL Server
Избыточность при создании центра обработки данных невозможна
Не все приложения умеют общаться с VIP или виртуальным именем
Чтобы серверы видели друг друга нужны две сетевые карты
Выделение VLAN
Где используется
PENS
PubWiz (внутренний инструмент публикаций MS.com)

Слайд 26

Сценарий 4: NLB & Replication для данных только на чтение

За
С точки зрения конечного

Сценарий 4: NLB & Replication для данных только на чтение За С
пользователя все прекрасно (сервис доступен)
Maintenance can occur on any system without impact to the end user
Очень хорошо масштабируется
Против
Задержка между издателем и подписчиком. Теоретически повторный запрос может вывести другие данные (если попасть на другой сервер).
Для крупных публикаций ресинхронизация - проблема
Издатель - single point of failure
Где используется
Downloads
ICP
CMS

Слайд 27

Сценарий 5: Комбинированная схема

За
Высокий уровень доступности для Web серверов, приложение все время

Сценарий 5: Комбинированная схема За Высокий уровень доступности для Web серверов, приложение
видно
Высокий уровень доступности для сотрудников MSFT, обновляющих контент
Горизонтальное масштабирование
Против
Практически невозможно выполнять обновления на front end серверах
Если издатель переходит на резервный сервер сотрудники MSFT не могут работать
Проблемы ресинхронизации
Не обеспечивается географически избыточная конфигурация
Где используется
MSI (Profile)
Communities

Слайд 28

Сценарий 6 – Избыточность для центра обработки данных

За
Высокий уровень доступности для Web

Сценарий 6 – Избыточность для центра обработки данных За Высокий уровень доступности
серверов, приложение все время видно
Высокий уровень доступности для сотрудников MSFT, обновляющих контент
Горизонтальное масштабирование
Против
Практически невозможно выполнять обновления на front end серверах
Если издатель переходит на резервный сервер сотрудники MSFT не могут работать
Сотрудники MSFT должны перенастроить приложения
Ресинхронизация
Больше компонентов
Где используется
Windows Update v5 (три центра)

Слайд 29

Планирование для SS2k5

Требования по доступности (возможная длительность перерыва)
Размещение различных связанных приложений
Выработка альтернативных

Планирование для SS2k5 Требования по доступности (возможная длительность перерыва) Размещение различных связанных
решений
Стандартизированные планы
Архитектурные решения

Слайд 30

Реализация аппаратной конфигурации

Обновление на месте потребует больше времени чем альтернативные решения
Переход на

Реализация аппаратной конфигурации Обновление на месте потребует больше времени чем альтернативные решения
резервный сервер (log shipped instance)
Позволяет обновление оборудования и ОС
Позволяет перейти в другой центр обработки данных
Установка именного экземпляра SQL Server 2005 на одиночный сервер
Подключение БД Attach/Detach
Внимание: БД будут подключены с уровнем совместимости 8.0

Слайд 31

Peer to Peer Replication

Data Center #1

Data Center #2

Для получения наилучших результатов приложение

Peer to Peer Replication Data Center #1 Data Center #2 Для получения
должно быть спроектировано с учетом задержек передачи

Слайд 32

Peer to Peer Replication

Использование NLB совместно с Peer to Peer Replication позволяет

Peer to Peer Replication Использование NLB совместно с Peer to Peer Replication
получить интересные возможности по масштабируемости и доступности

Слайд 33

Database Mirroring

Для получения наилучших результатов приложение должно понимать что работает с зеркалированным

Database Mirroring Для получения наилучших результатов приложение должно понимать что работает с
сервером, особенно, если используется автоматический переход
Настройка:
Создание полной копии основной БД в определенное место
Создание копии журнала основной БД в то же место
Восстановление зеркалируемой БД на зеркальном сервере с опцией NORECOVERY
Восстановление журнала на зеркальном сервере с опцией NORECOVERY (это важно)

Слайд 34

Репликация высокой интенсивности

У БД Distribution отключают autostats; обновление статистики делают вручную
Особая настройка

Репликация высокой интенсивности У БД Distribution отключают autostats; обновление статистики делают вручную
параметров для обеспечения высокой интенсивности репликации

Слайд 35

Репликация высокой интенсивности Параметры, которые мы используем

Репликация высокой интенсивности Параметры, которые мы используем

Слайд 36

Репликация высокой интенсивности

Проверка значений параметров
sp_help_agent_profile – получает ID профиля
sp_help_agent_parameter – показывает параметры

Репликация высокой интенсивности Проверка значений параметров sp_help_agent_profile – получает ID профиля sp_help_agent_parameter
для этого ID

*Скрипты в самом конце презентации

Слайд 37

Репликация высокой интенсивности

Distribution agent / Log reader должны доставлять транзакции с малой

Репликация высокой интенсивности Distribution agent / Log reader должны доставлять транзакции с
(~ 10 минут) задержкой
Occasional blocking between replication agents and clean job.
You may need to turn off clean job
Run either log reader or distribution agent for a period of time, but not both at once
Replication Check Job
Checks for history logging every 10 minutes. Marks agent suspect if no logging.
It is safe to disable this job if it causes problems.

Слайд 38

Уроки

Планирование
Тщательное планирование – залог успешной миграции. Тщательное документирование существующей системы и

Уроки Планирование Тщательное планирование – залог успешной миграции. Тщательное документирование существующей системы
параметров приложения – очень важный аспект планирования. Использование Upgrade Advisor позволило обнаружить и скорректировать проблемные места до начала миграции.
Разработка списка задач до начала миграции обеспечило стандартизированный подход в каждом конкретном случае и дало возможность сформулировать дальнейшие планы. На основании опыта выполненных миграций Upgrade Advisor и SCC были расширены для более обширного списка рекомендаций.

Слайд 39

Уроки

Внедрение
Тестовое внедрение на этапе планирования. Тестовое внедрение позволило уточнить необходимо время работ

Уроки Внедрение Тестовое внедрение на этапе планирования. Тестовое внедрение позволило уточнить необходимо
(достаточно ли доступного окна)
После внедрения подробное документирование процесса и принятых решений существенно облегчает работу по дальнейшим проектам.
Использование новой функциональности. Четкая идентификация на ранних этапах внедрения полезной для конкретного приложения новой функциональности позволила обеспечить гораздо более плавное проведение проекта. Например, аккуратное планирование секционирования (table-partitioning) обеспечило прирост производительности и более «теплый» прием конечными пользователями.

Слайд 40

Уроки

Перед началом миграции следует повысить уровень знаний о продукте: новой функциональности, не

Уроки Перед началом миграции следует повысить уровень знаний о продукте: новой функциональности,
поддерживаемых более функциях, закрытой в этой версии функциональности…
Использование встроенной функциональности:
Расширенные возможности защиты
Поддержка 64-bit оборудования в SQL Server 2005
Новые возможности для разработчиков
Расширенные аналитические и отчетные возможности

Слайд 41

Lessons Learned

Built-in new features
By using enhanced support for 64-bit mode in SQL

Lessons Learned Built-in new features By using enhanced support for 64-bit mode
Server 2005, Microsoft IT maintains a much more scalable environment in which server consolidation may occur, and in which performance has dramatically increased.
By using developer enhancements in SQL Server 2005, Microsoft IT has delivered more robust and scalable solutions to meet new requirements from the various business groups within Microsoft at a reduced total cost of ownership.
By using enhanced analysis and reporting abilities in SQL Server 2005, Microsoft IT can provide real-time insights into business values to help business groups make better-informed decisions.

Слайд 42

Уроки резюме

Очень немного проблем при миграции
Увеличение времени доступности
Увеличение производительности
Улучшение масштабируемости
Облегчение администрирования
Снижение затрат

Уроки резюме Очень немного проблем при миграции Увеличение времени доступности Увеличение производительности

Слайд 43

Ресурсы

SS2k5 Upgrade Handbook http://www.microsoft.com/technet/prodtechnol/sql/2005/sqlupgrd.mspx
Replaying Traces http://msdn2.microsoft.com/en-us/library/ms190995(en-US,SQL.90).aspx
Generating List of SQL Servers http://www.sqldev.net/misc.htm

Ресурсы SS2k5 Upgrade Handbook http://www.microsoft.com/technet/prodtechnol/sql/2005/sqlupgrd.mspx Replaying Traces http://msdn2.microsoft.com/en-us/library/ms190995(en-US,SQL.90).aspx Generating List of SQL

Microsoft.com Standard Server Configurations http://www.microsoft.com/technet/itsolutions/msit/deploy/mscomserverconfig_note.mspx
Monitoring and Troubleshooting Microsoft.com http://www.microsoft.com/technet/itsolutions/msit/operations/mscomtroubleshoot.mspx

Слайд 44

Вопросы?

Вопросы?

Слайд 45

Scripts

--Replication: update statistics dynamic
set nocount on
select 'update statistics ' + name +

Scripts --Replication: update statistics dynamic set nocount on select 'update statistics '
char(10) + 'go'
from sysobjects where type='u' -- sys.objects for sql 2005
order by 1

Слайд 46

Scripts

--Replication: yukon_manageReplAgentProfiles.sql
set nocount on
-- skorman: 12/2005
-- First find the profile ID for

Scripts --Replication: yukon_manageReplAgentProfiles.sql set nocount on -- skorman: 12/2005 -- First find
each of your agent profiles
-- It shows which one is the default (being used)
sp_help_agent_profile 2 -- log reader
-- verify the profile ID and parameters set
sp_help_agent_parameter @profile_id=19
19 -HistoryVerboseLevel 2
19 -LoginTimeout 30
19 -LogScanThreshold 500000
19 -PollingInterval 10
19 -QueryTimeout 18000
19 -ReadBatchSize 10
sp_help_agent_profile 1 -- snapshot reader
sp_help_agent_parameter @profile_id=17
17 -BcpBatchSize 100000
17 -HistoryVerboseLevel 2
17 -LoginTimeout 30
17 -QueryTimeout 18000
-->>

sp_help_agent_profile 3 -- distribution agent
sp_help_agent_parameter @profile_id=18
18 -BcpBatchSize 100000
18 -CommitBatchSize 10
18 -CommitBatchThreshold 100
18 -HistoryVerboseLevel 2
18 -KeepAliveMessageInterval 300
18 -LoginTimeout 30
18 -MaxBcpThreads 2
18 -MaxDeliveredTransactions 0
18 -PollingInterval 10
18 -QueryTimeout 60000
18 -SkipErrors
18 -TransactionsPerHistory 100
-- Use this to change which profile is the default outside the gui
-- Must turn off one and turn on the other.
select * from msdb..msagent_profiles
begin tran
update msdb..msagent_profiles
set def_profile=0
where profile_id=4
commit

Слайд 47

Scripts

--Replication: yukon_rebuild_DistributionIndexes.sql
USE [distribution]
GO
/****** Object: Index [ucMSrepl_commands] Script Date: 12/15/2005 14:09:33 ******/
CREATE UNIQUE

Scripts --Replication: yukon_rebuild_DistributionIndexes.sql USE [distribution] GO /****** Object: Index [ucMSrepl_commands] Script Date:
CLUSTERED INDEX [ucMSrepl_commands] ON [dbo].[MSrepl_commands]
(
[publisher_database_id] ASC,
[xact_seqno] ASC,
[command_id] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON) ON [PRIMARY]
GO
/****** Object: Index [ucMSrepl_transactions] Script Date: 12/15/2005 14:09:52 ******/
CREATE UNIQUE CLUSTERED INDEX [ucMSrepl_transactions] ON [dbo].[MSrepl_transactions]
(
[publisher_database_id] ASC,
[xact_seqno] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON) ON [PRIMARY]

Слайд 48

Upgrade Advisor Import 1

--First create the database you intend to use. Each

Upgrade Advisor Import 1 --First create the database you intend to use.
script references this database.
--enable Full Text indexing in the database you import the data to.
use DBOps2
go
set nocount on
-- drop TABLE [dbo].[importDE];
CREATE TABLE [dbo].[importDE](
serverName varchar(39),
importdate datetime ,
[F1_engine] [varchar](30),
[F2_phase] [varchar](30) ,
[F3] [varchar](1000) default null,
[F4] [text] default null,
[F5] [varchar](1000) default null,
[F6] [varchar](1000) default null,
[F7] [varchar](1000) default null)
GO
create view DEupgradeAdvice
as
select distinct serverName,
F2_phase as issueType,
F3 as issueDesc,
cast(F4 as varchar(8000)) as issueText,
F5 + ' '+F6 + ' ' + F7 as issueDetail
from importDE
GO
-- drop table codeCheck;
CREATE TABLE [dbo].[codeCheck](
source varchar(50),
category varchar(75),
status varchar(50),
feature varchar(100) ,
FindByKeyword varchar(100),
FindByQuery varchar(500),
FindByOther varchar(500),
notes varchar(5000),
moreInfo varchar(300),
entryDate datetime default getdate() )
GO
-- drop table importedCode;
create table importedCode
( servername varchar(39),
databasename varchar(20),
objname sysname,
objtype varchar(20),
code varchar(7500),
pkid int identity(1,1) not null UNIQUE NONCLUSTERED )
GO
create unique index pkid_importedCode on importedCode(pkid)
go
create table UAfileImport
(id int identity(1,1) not null,
serverName varchar(39),
engineCode char(2),
source varchar(5),
engineName varchar(30),
UAxml xml,
UAout varchar(7500),
importdate datetime default(getdate()) )
Go
create table upgradeAdvice
(serverName varchar(30) ,
source varchar(5) ,
engine char(2) ,
category varchar(30) ,
comment varchar(7930) )
go

Слайд 49

Upgrade Advisor Import 2

--This script imports MOST Upgrade Advisor DE*.CSV reports.
--It

Upgrade Advisor Import 2 --This script imports MOST Upgrade Advisor DE*.CSV reports.
will need modification in some cases.
use DBOps
go
--for demo
delete from importDE
set nocount on
declare @fileExt char(3)
set @fileExt = 'csv'
truncate table UAfileImport
declare @serverList table (serverName varchar(20))
declare @fileList table (fileName varchar(50))
declare @fileName varchar(15)
declare @uncFilePath varchar(100)
declare @uncServerUpgradeFilePath varchar(120)
declare @serverName varchar(20)
declare @engine varchar(20)
declare @statement varchar(1500)
declare @quote char(1)
declare @nsql nvarchar(1500)
declare @importFilePath varchar(100)
declare @trash table (col1 int)
declare @serversDE table (serverName varchar(39))
set @uncFilePath = 'C:\_SQLupgrade\UAoutput\'
set @quote = char(39)
set @statement = 'dir /AD /B /ON ' + @uncFilePath
insert @serverList (serverName)
exec master.dbo.xp_cmdshell @statement
delete @serverList where serverName is NULL
WHILE exists (select * from @serverList)
begin
set @serverName = (select top 1 serverName from @serverList)
delete from @serverList where serverName = @serverName
set @uncServerUpgradeFilePath = @uncFilePath + @serverName + '\'
set @statement = 'dir /A-D /B /ON ' + @uncServerUpgradeFilePath + '*.'+@fileExt
insert @fileList (fileName)
exec master.dbo.xp_cmdshell @statement
delete from @fileList where fileName is null
--for demo
delete from @fileList where left(filename,2)<> 'DE'
if exists (select * from @fileList where filename like 'DE%')
begin
set @fileName = (select top 1 fileName from @fileList)
delete from @fileList where fileName = @fileName
--rename the files (format of De.xml.csv will cause an error, so rename to De.csv)
set @statement = 'ren '+@uncServerUpgradeFilePath+@fileName+' '+left(@fileName,2)+'.'+@fileExt
insert @trash --discard result
exec master.dbo.xp_cmdshell @statement
select @fileName = left(@fileName,2)+'.'+@fileExt
--select 'Importing '+@serverName+', '+@filename
set @nsql = 'Insert importDE
SELECT serverName='+@quote+@serverName+@quote+',importDate=getdate(),F1,F2,F3,F4,F5,F6,F7
FROM OpenRowset('
+@quote+'Microsoft.Jet.OLEDB.4.0'+@quote+', '
+@quote+'Text;Database='
+ @uncServerUpgradeFilePath +';HDR=NO'+@quote+','
+@quote+'select * from '+@fileName+@quote+')'
exec sp_executesql @nsql
--some files have six columns
If not exists (select * from importDE where serverName = @serverName)
begin
select 'Retry 1 for '+@serverName+', '+@filename
set @nsql = 'Insert importDE serverName, importdate,F1,F2,F3,F4,F5,F6
SELECT serverName='+@quote+@serverName+@quote+',importDate=getdate(),F1,F2,F3,F4,F5,F6
FROM OpenRowset('
+@quote+'Microsoft.Jet.OLEDB.4.0'+@quote+', '
+@quote+'Text;Database='
+ @uncServerUpgradeFilePath +';HDR=NO'+@quote+','
+@quote+'select * from '+@fileName+@quote+')'
exec sp_executesql @nsql
end
--and, some have five columns
If not exists (select * from importDE where serverName = @serverName)
begin
select 'Retry 2 for '+@serverName+', '+@filename
set @nsql = 'Insert importDE serverName, importdate,F1,F2,F3,F4,F5
SELECT serverName='+@quote+@serverName+@quote+',importDate=getdate(),F1,F2,F3,F4,F5
FROM OpenRowset('
+@quote+'Microsoft.Jet.OLEDB.4.0'+@quote+', '
+@quote+'Text;Database='
+ @uncServerUpgradeFilePath +';HDR=NO'+@quote+','
+@quote+'select * from '+@fileName+@quote+')'
exec sp_executesql @nsql
end
If not exists (select * from importDE where serverName = @serverName)
select 'Server '+@serverName+' could not be imported.', @nsql
end
delete from @fileList
end
select distinct [Successfully imported:]= serverName from importDE
-- select * from DBOps.dbo.importDE
-- delete from importDE
Имя файла: Экспертные-советы-по-переходу-на-новую-версию-Microsoft-SQL-Server-2005.pptx
Количество просмотров: 119
Количество скачиваний: 0