Показаны сообщения с ярлыком MS SQL Server 2008. Показать все сообщения
Показаны сообщения с ярлыком MS SQL Server 2008. Показать все сообщения

четверг, 18 ноября 2010 г.

Change collation on cluster instance after installation SQL 2008 R2

Как изменить collation(порядок сортировки) после установки SQL 2008 R2 в кластере

1.Microsoft рекомендует сделать резервные копии всех баз данных, а лучше отдетачить(Detach) и перетащить на другой сервер, что и было сделано.

Что бы посмотреть текущий Collation на инстансе SQL сервера нужно в SQL Server Management Studio выполнить скрипт:

select convert(sysname, serverproperty(N'collation'))

или зайти в свойства Инстанса->General->Server Collation

в моем случае это был: Cyrillic_General_CI_AS
а требовался: SQL_Latin1_General_CP1251_CI_AS

2.Переводим в offline ресурсы кластерного ресурса SQL кластера для SQL инстанса в оснастке Failover Cluster Management:



3.И, на ноде владельце кластерного ресурса, запускаем изменение с командной строки:

d:\SQLServer2008R2Enterprise>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME= SQLSYSADMINACCOUNTS=\ /SAPWD=SAPASSWORD /SQLCOLLATION=SQL_Latin1_General_CP1251_CI_AS


Надо сказать, что если здесь не указать /SAPWD=SAPASSWORD, как у меня и было, то ничего не получиться и придется лезть в лог C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logsummary.txt и смотреть в чем же дело.

команда завершается безответно:



4.Проверка:



Получаем, требуемое Q.E.D.

Ссылки по теме:
http://www.npo-comp.ru/faq/faq_90016239.shtml
http://www.sql.ru/forum/actualthread.aspx?tid=204089
http://social.msdn.microsoft.com/Forums/fi-FI/sqldatabaseengine/thread/ab266beb-5618-4f3a-bd4b-b9fdc7f02344
http://msdn.microsoft.com/en-us/library/ms190920.aspx
http://msdn.microsoft.com/en-us/library/ms179254.aspx

среда, 10 ноября 2010 г.

Добавление учетной записи компьютера в Security SQL сервера

Который раз спотыкаюсь об эти грабли - в SQL Server 2005 было проще - добавляешь в конце имени компьютера знак доллара и тогда учетная запись компьютера определялась в SQL Server Management Studio при создании пользователя в Security в SQL Server 2008 только скриптом получилось:

USE
[master]
GO
EXEC master.dbo.sp_grantlogin @loginame = N'DOMAIN\ACCOUNT'

http://www.sqldev.org/getting-started-with-sql-server/how-to-add-computer-account-in-sql-2005-98197.shtml

среда, 9 июня 2010 г.

После миграции баз с SQL 2005 на SQL 2008...

После миграции баз с SQL 2005 на SQL 2008 они уже не хотят работать на SQL 2005 вновь им подавай только 2008 и не ниже. Причем не ниже той версии на которой был сделан бэкап, если перенос ведется средствами резервного копирования и восстановления:



В частности к ним принадлежит база WSUS и база ESX vSphere

Вопрос: "Как перенести базу на SQL с более поздней версией?" - остается открытым.
Надо попробовать просто отмонтировать базу от "нового" SQL сервера и примонтировать к "старому" SQL серверу - скорее всего это выход...

понедельник, 31 мая 2010 г.

Обновление EMC Cluster Enabler с версии 3.0.81.0 до версии 3.1.0.0

После обновления EMC Cluster Enabler 3.0.83.0 до версии 3.1.0.0 на настроенном SQL кластере(Active/Active) с настроенной зеркальной репликацией на хранилищах перестал работать автоматическое переключение (разворачивание) зеркальной репликации между массивами хранения EMC CX4-120, при Failover. Устанавливался EMC Cluster Enabler 3.1.0.0 устанавливался без удаления предыдущего, при этом после установки нода кластера перезагружалась. Причем дисковый ресурс вообще не поднимается, а также дискам не были назначены буквы и такое ощущение что диски в offline, по крайней мере это следовало из Server Manager → Disk Manager.

Хотя при этом EMC Cluster Enabler Manager показывал, что диск с буквой назначен.

Ещё в лог выпадали ошибки вида:

Cluster resource 'EMC_SQL Server (CLUSTER02SQL2)' in clustered service or application 'SQL Server (CLUSTER02SQL2)' failed.

-------------------------------------------------------------------------

Log Name: Application

Source: EMC Cluster Enabler

Event ID: 5

Task Category: None

Level: Error

Keywords: Classic

User: SYSTEM

Computer: SQL-NODE-01.

Description:

Call to [EvaluateFailoverPolicies] failed. RC=[0×80004005].

Event Xml:

http://schemas.microsoft.com/win/2004/08/events/event»>

  
  5
  2
  0
  0x80000000000000
  6461
  Application
  Call to [EvaluateFailoverPolicies] failed. RC=[0x80004005].
  53514C5F5365727665725F5F434C5553544552303253514C325F


Log Name: Application

Source: EMC Cluster Enabler

Event ID: 5

Task Category: None

Level: Error

Keywords: Classic

User: SYSTEM

Computer: SQL-NODE-01.

Description:

Group [SQL_Server_CLUSTER02SQL2_] failed to come online.

Event Xml:

http://schemas.microsoft.com/win/2004/08/events/event»>

  5
  2
  0
  0x80000000000000
  6462
  Application
  SQL-NODE-01.
  
  Group [SQL_Server__CLUSTER02SQL2_] failed to come online.
  53514C5F5365727665725F5F434C5553544552303253514C325F


Log Name: Application

Source: EMC Cluster Enabler

Event ID: 3

Task Category: None

Level: Error

Keywords: Classic

User: SYSTEM

Computer: SQL-NODE-01.

Description:

Call to [CEFailOverLogic::WriteEnableMirrorGroup] failed for cluster resource [EMC_SQL Server (CLUSTER02SQL2)]. RC=[0×80004005].

Event Xml:

http://schemas.microsoft.com/win/2004/08/events/event»>

  3
  2
  0
  0x80000000000000
  6463
  Application
  SQL-NODE-01.
  
  Call to [CEFailOverLogic::WriteEnableMirrorGroup] failed for cluster resource [EMC_SQL Server (CLUSTER02SQL2)]. RC=[0x80004005].
  454D435F53514C205365727665722028434C5553544552303253514C3229


Перевел кластерные ресурсы на ту кластерную ноду, где были диски.

Разорвал вручную репликацию между системами хранения

cluster enabler продолжал думать…

пробовал различные варианты - reconfigure CE на диск, Deconfigure - ничего не помогало

Пустил вручную синхронизацию между системами хранения на необходимые луны (т.е. те, которые были кластерными дисками). После этого - 2-й диск увиделся на ноде - владельце диска, в EMC Cluster Enabler Manager в контекстном меню выполнил Configure - на корне - после чего создалась группа консистентности автоматически и 2-й кластерный диск (2-го SQL кластера) поднялся и сам SQL-cluster 2-й тоже поднялся и стал работать.

Первый же кластер никак не хотел подниматься - диск не брал букву. Сделал на 1-м диске Deconfigure CE и перезагрузил ноду владельца. Кроме того в EMC Cluster Enabler Manager группа 1-го SQL кластера не хотела выполнять операцию «Deconfigure CE» выпадала ошибка. После перезагрузки оба диска не взяли буквы. Поскольку перегружал ноду - все ресурсы у бежали на пассивную ноду, но там не поднялись. Перегрузил и её что бы вернуться к ноде с которой работал до перезагрузки вообще. После перезагрузки поднялся 2-й диск - это правильно, поскольку не было ни одной группы консистентности, связанной с Cluster Enabler. Перезагрузка не помогла с 1-м диском, он таки не брал букву и оставался без буквенным - удалил группу «SQL Server (CLUSTER02SQL1)» через EMC Cluster Enabler Manager, после чего 1-й диск сразу поднялся и ему присвоилась нормально группа, при этом 1-й диск удалился тоже в EMC Cluster Enabler Manager-е. Сделал Modify на группе «SQL Server (CLUSTER02SQL1)» (на самом деле она удалилась как группа для которой включен Cluster Enabler, а не из кластера вообще).

На освобожденном дисковом ресурсе (1-й диск) через оснастку Failover Cluster Management (Windows 2008 не R2) через контекстное меню на диске «More Actions…» → «Move this resource to another service or application» и в открывшемся окне выбрал 1-й кластер SQL Server-а. После этих манипуляций «SQL Server (CLUSTER02SQL1)» - кластерный ресурс (1-й кластер SQL Server на Active/Active кластере) запустился полностью. Осталось только теперь добавить эту группу обратно в Cluster Enabler чтобы перебегало хранилище и разворачиывалась репликация при выключении или падении ноды. Замечу что после этого диск заново появился в группе «SQL Server (CLUSTER02SQL1)» в EMC Cluster Enabler Manager.


Для преобразования кластерных групп в Cluster Enabled группы идем в EMC Cluster Enabler Manager и на корне там где у нас виндовый кластер Cluster-02 правой кнопкой выбираем меню «Configure CE Cluster» → Configure → Здесь открывается список с нодами кластера жмем Next →

После чего были автоматически созданы группы консистентности для обоих виртуальных SQL Server-ов (кластерных ресурсов или что то же самое SQL кластеров). И для обеих групп: «SQL Server (CLUSTER02SQL1)» и «SQL Server (CLUSTER02SQL2)» Cluster Enabler стал включенным.


При проверке диск не перебежал в ручном режиме - не назначилась буква - пустил ноду - на которую диск не перебежал в перезагрузку. После этого всё заработало - проверял перезагрузкой активной ноды. Единственный момент только упустил в EMC Cluster Enabler Manager необходимо было выставить в свойствах групп Failover Behavior: Automatic Failover вместо Restrict Group movement.


вторник, 18 мая 2010 г.

Интересное поведение базы при переносе с SQL 2000 на SQL 2008

Перенес базу с SQL 2000 через backup/restore на SQL 2008, при восстановлении - по окончании сразу же выдались ошибки:
-------------------------------------------
Date 18.05.2010 12:28:56Log SQL Server (Current - 14.05.2010 11:36:00)
Source spid72
MessageWarning: User "sys" (principal_id = 31) in database "DB" has been renamed to "_ID_0x0000001F_RENAMED_FROM_sys". "sys" is a reserved user or schema name in this version of SQL Server.

------------------------------------------
Date 18.05.2010 12:29:01Log SQL Server (Current - 14.05.2010 11:36:00)
Source spid72
MessageWarning: Database "DB" was marked suspect because of actions taken during upgrade. See errorlog or eventlog for more information. Use ALTER DATABASE to bring the database online. The database will come online in restricted_user state.

-----------------------------------------
После чего окно восстановления не закрылось и удачно нажать можно было только Cancel.
В результате базы была восстановлена, но он осталась в Offline, хотя при восстановлении указывал опции, что база должна быть достпна после восстановления.
Переведя базу в online обнаружил, что она в SINGLE_USER
Заяйдя в свойства базы перевел её в MULTI_USER режим.

четверг, 6 мая 2010 г.

Миграция базы данных Virtual Center c SQL Server 2005 на SQL Server 2008

Сделал практически все что написано здесь, т.е.:
VCenter 2.5.0
1.Остановил службу "VMware VirtualCenter Server"
2.Отключил базу на SQL 2005 сервере - Take Offline.
3.Скопировал файлы базы данных на новый сервер SQL 2008.
4.На новом SQL 2008 сервере примонтировал базу Attach, выбрав файл .mdf
5.У меня был сохраненный пароль пользователя с SQL аутентификацией со старого сервера - создал аналогичного, назначил ему роль sa на сервер. Если у вас отсутствует пароль на поьлзователя, то можно просто через установку удаление програм запустить Modify для "VMware VirtualCener Server", где можно заново назначить базу с новыми настройками.
6.Настройка ODBC на новый сервер:(для Native Client) Start->Administrative Tool->Data Source (ODBC)->System DSN->choose "Vmware VirtualCenter"->Press button "Configure..." -> сменить "имя сервера" на "новое имя сервера"\"имя инстранса SQL" - здесь имя инстанса не нужно указывать если оно имя по-умолчанию (типа к службе SQL в службах идет примиска MSSQLSERVER) ->Press "Next" and insert "Login ID" and "Password"->Press "Next" set CheckBox "Cnange the default database to:" and choose youre database name->Press "Next"->Press "Finish"->Press "Test Data Source..." must see "TESTS COMPLETED SUCCESSFULLY!"->Ok->Ok->Ok
7.Запустил службу "VMware VirtualCenter Server"

через "SQL Server Management Studio" видим в "Processes", что есть подключения к базе

после того как всё заработало подключил базу в настройка ODBC не через имя сервера, а через DNS алиас - всё так же запустилось

WSUS - Миграция базы данных с СУБД SQL Server 2005 на СУБД SQL Server 2008

В английском варианте это звучало бы: WSUS - Migrating from SQL Server 2005 Database to SQL Server 2008 Database
Конечно же всем для начала читать WSUS - Migrating from Windows Internal Database to SQL Server 2005
Миграция выполняется буквально в несколько шагов - ничего сложного:
1.Останавливаем службу "Update Services" на своем сервере WSUS
2.Заходим в SQL Server Management Studio на сервер баз данных SQL Server 2005 на котором "крутиться" в настоящий момент база WSUS. И делаем праой кнопкой на базе WSUS (скорее всего имя базы будет SUSDB) следующее Tasks -> Take Offline
3.Копируем файлы базы данных на сервер баз данных SQL Server 2008
4.На сервере баз данных SQL Server 2008 через SQL Server Management Studio (для 2008 своя оснастка, отличная от 2005) на корне заходим в Databases -> Attach и выбираем файл базы данных .mdf жмем OK, после чего база будет присоединена к серверу и будет в работе.
5.Теперь необходимо направить сервер WSUS на новый сервер баз данных SQL Server 2008. Для этого заходим на сервер WSUS (например по RDP), находим в реестре (regedit) следующую ветку:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup]
выбираем параметр:
SqlServerName, здесь ранне стояло имя алиаса DNS для подключения к SQL Server 2005, например: "db_wsus_susdb" и всё работало, теперь же указываем также имя DNS алиаса(DNS псевдонима) но с указанием имени инстанса уже: "db_wsus_susdb\cluster02sql2".
Естественно DNS алиас направляем на новый сервер баз данных SQL Server 2008.

Дело в том, что в моем случае был Active\Active кластер с двумя инстансами: один из которых назывался "cluster02sql2", а имя виртуаьлного узла кластера sql сервера было "cluster-02-sql2" на который, как раз и направили DNS алиас.

Возможно у кого-то зараработает и без указания имени DNS алиаса, но в рассматриваемой кластерной среде так не заработало, возможно дело в том, что SQL инстанс именованный - отличный от дефолтового и ещё отличается от имени витруального узла кластера.
Параметры:
"SqlAuthenticationMode"="WindowsAuthentication"
"SqlDatabaseName"="SUSDB"
"SqlUserName"=""
"SqlEncryptedPassword"=""
оставил без изменения.
6.Необходимо добавить учетную запись компьютера, на котором распологается WSUS сервис - "Update Services" на доступ к SQL Server 2008, для эого заходим через SQL Server Management Studio в корне оснастки Security -> на Logins жмем правой кнопкой и выбираем "New Login...", поскольку мы в находимся в доменной среде и безопасность сервера находиться в режиме Mixed mode, выбираем Windows authentication, в поле "Login Name" вводим имя компьютерного аккаунта, например, "WSUS-Server" и в конце добавляем знак $, т.е. должно получиться "WSUS-Server$", у меня тоже не получилось с первого раза, всё дело в том, что на базу master доступ компьютерным аккаунтам дается по-другому, что бы получилось - нужно указать нашу базу SUSDB. После добавления аккаунта предоставил ему роль на базу db_owner.
7.На сервере WSUS запускаем "Update Services", если все операции начиная с первой вы проделали очень быстро, то, возможно, ещё не очистился DNS кэш со старым значение DNS алиаса для разрешения этой проблемы, можно выполнить команду: ipconfig /flushdns, но лучше перезагрузить компьютер.

четверг, 1 апреля 2010 г.

Разворачивание MS SQL Server 2008 в кластере Active/Active на Windosw Server 2008 R2 с использованием MirrorView и EMC Cluster Enabler

Использовались системы хранения данных EMC CX4-120 CLARIION
После того как кластер Windows с Majority Node Set был развернут.
Натолкнулся на невозможность запустить MSDTC (Distributed Transaction Coordinator).
Что интересно служба на серверах работала, но не работал (не запускался) кластерный ресурс на сервере:

Отдельно создавать ресурс кластера под DTC не стал, так как он требует отдельной точки доступа (IP-адрес) и отдельного дискового ресурса, причем если используется диск из EMC Cluster Enabler (т.е. диск, которые апаратно реплицируется между хранилищами посредством MirrorView), то невозможно добавить дисковый ресурс к создаваемому кластерному ресурсу DTC поскольку это специфика EMC Cluster Enabler, насколько я понял.

На приведенном рисунке не стартует DTC, при этом в логах обнаружил следующие ошибки:

The Cluster service failed to bring clustered service or application 'cluster-02-sql2' completely online or offline. One or more resources may be in a failed state. This may impact the availability of the clustered service or application.

и

Log Name: Application
Source: Microsoft-Windows-MSDTC Client 2
Date: 31.03.2010 14:42:15
Event ID: 4879
Task Category: CM
Level: Warning
Keywords: Classic
User: N/A
Computer: SQL-NODE-02.corp.mydomain.ru
Description:MSDTC encountered an error (HR=0x80000171) while attempting to establish a secure connection with system SQL-NODE-02.
Event Xml: 4879 0 3 3 0 0x80000000000000 1076 Application SQL-NODE-02.corp.mydomain.ru 80000171 SQL-NODE-02

причем не помогает dcomcnfg в конфигурации:

а comclust здесь (w2008 R2) просто нету

Попасть в "свойства" объекта "Clustered DTCs" не представляется возможность, ни правой кнопкой мыши, ни через мени Action этой позиции просто нету.

принял решение отказать ся от MS DTC.

Ссылки по теме: ссылка1, ссылка2, ссылка3, ссылка4, ссылка5, ссылка6, ссылка7, ссылка8

для пересборки кластера достаточно разорвать и уничтожить группы консистентности на системаха хранения, которые были созданы ПО Cluster Enabler-ом после чего можно заново собирать группы через Cluster Enabler.

При создании группы через Cluster Enabler выставляю режим Automatic Filover.
После создания группы через Cluster Enabler вижу, что группа с таким названием появиласть в оснастке "Failover Cluster Management", при этом на системах хранения автоматически создалась группа консистентности.
Перебегание диска между нодами (в это время переворачивалась синхронная
реплика между системами хранения) - показало успешное перебегание.


В этом случае при установке SQL кластер невозможно установить, так как он не находит доступный общий дисковый ресурс, поскольку он уже занят в дисковой группе от Cluster Enabler-а.


Перезагрузка и перенос кластерного дискового ресурса между нодами ничего не дал - всё осталось также как и было - невозможно установить SQL без доступного общего диска.


Через Cluster Enabler на созданной дисковой группе сказал Modify group, далее выставил галочку что бы удалить устройства добавленные в Cluster Enabler. После чего в Cluster Enabler группа удалилась и вместе с ней группа консистентности на пассивной системе хранения тоже удалилась, а на активной осталась только сама группа, но без содержимого - пустая группа.

Удалил пустую группу консистентности, при этом дисковый русурс остался быть доступным на кластере в разделе Storage. примечательно, что другой дисковый ресурс(также зеркалируемый посредством MirrorView между системами хранения), который не добавлялся в Cluster Enabler, но был активным на активной ноде, здесь не отображался.

После запуска установки SQL Server больше не ругался на отсутствующий дисковй ресурс. Ругался только на:

1.Rule "Distributed Transaction Coordinator (MSDTC) clustered" generated a warning.The MSDTC service is not clustered.

2.Rule "Network binding order" generated a warning.The domain network is not the first bound network.


Поскольку отсутствовал DTS, при установке SQL Server снял галки:

1.Analisys Server

2.Reporting Services

3.Client Tools SDK

4.SQL Client Connectivity DK

5.Microsoft Sync Framework


В домене создал учетку для служб кластера и большинство служб (все которые требует настройки) установил запуск от неё.

Сохранил информацию об установке C:\Program Files\Microsoft SQL Server\100\Setup
Bootstrap\Log\20100504_174117\ConfigurationFile.ini На пассивной ноде поппытался установить SQL Server используя конфигурационный файл инсталяци с пассивной ноды, режим Advanced:Install based on configuration fileв процессе установки возникла ошибка:The setting 'FAILOVERCLUSTERDISK' is not allowed value of setting 'ACTION' is 'Install'. Error code 0x84B40005

Если же устанавливать Failover CLUSTER не через ini файл а простым добавление 2-й ноды, при этом выбираем ключ продукта...

В процессе установки возникает ошибка:the current sku is invalid. помог запуск с командной строки
"D:\Masters\en_sql_server_2008_enterprise_x86_x64_ia64_dvd_x14-89207\setu
p.exe" /ACTION=AddNode /INSTANCENAME="CLUSTER02SQL1" /SQLSVCACCOUNT="DOMAIN\Username" /SQLSVCPASSWORD="Password" /AGTSVCACCOUNT="DOMAIN\Username", /AGTSVCPASSWORD="Password" /INDICATEPROGRESS
После этого запустил настройку Cluster enabler на активной ноде, выбрав Configure CE Cluster, после чего приложение Cluster Enabler само преобразовало кластерную группу инстанса SQL Server в группу Cluster Enabled, и создало на CLARiiON-ах группу консистентности.

После чего SQL кластер успешно перебежал на пассивную ноду.

------------------------------------------------------------

Повторил всё тоже со 2-м инстансом - перебегает нормально.В результате получили Active/Active Cluster SQL Server