June 2007

You are currently browsing the monthly archive for June 2007.


– BOL Versions (2007/06/06) USE master GO DECLARE @key nvarchar(256), @ProductName nvarchar(256), @Version nvarchar(256), @Language nvarchar(4) – 9.0000.7028.1803 – Microsoft SQL Server 2005 Books Online (English) (February 2007) – 9.00.3062 EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\20959DF9723754C4682C71589F87E578′, @value_name=‘ProductName’, @value=@ProductName OUTPUT EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\20959DF9723754C4682C71589F87E578′, @value_name=‘Language’, @value=@Language OUTPUT SET @key = ‘SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist\BOL\’ + CASE CAST (@Language AS varbinary) WHEN 0x0900040000000000 THEN ‘1033\CurrentVersion’ WHEN 0x1900040000000000 THEN ‘1049\CurrentVersion’ END EXECUTE master..xp_regread @rootkey=‘HKEY_LOCAL_MACHINE’, @key=@key, @value_name=‘Version’, @value=@Version OUTPUT IF @ProductName IS NOT NULL SELECT @ProductName AS [Product Name], ISNULL(@Version, ‘N/A’) AS [Version] SELECT @ProductName = NULL, @Version = NULL, @Language = NULL, @key = NULL – 9.0000.7103.1540 – Электронная документация по Microsoft SQL Server 2005 (на русском языке) (февраль 2007) – 9.00.3068 EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\4685610755BF4B545BCFFB44AED0BDEB’, @value_name=‘ProductName’, @value=@ProductName OUTPUT EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\4685610755BF4B545BCFFB44AED0BDEB’, @value_name=‘Language’, @value=@Language OUTPUT SET @key = ‘SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist\BOL\’ + CASE CAST (@Language AS varbinary) WHEN 0x0900040000000000 THEN ‘1033\CurrentVersion’ WHEN 0x1900040000000000 THEN ‘1049\CurrentVersion’ END EXECUTE master..xp_regread @rootkey=‘HKEY_LOCAL_MACHINE’, @key=@key, @value_name=‘Version’, @value=@Version OUTPUT IF @ProductName IS NOT NULL SELECT @ProductName AS [Product Name], @Version AS [Version] SELECT @ProductName = NULL, @Version = NULL, @Language = NULL, @key = NULL – 9.0000.6089.0206 – Microsoft SQL Server 2005 Books Online (English) – 9.00.1399.06 EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\447A34B08B1B9804B91DD9147CCEA03A’, @value_name=‘ProductName’, @value=@ProductName OUTPUT EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\447A34B08B1B9804B91DD9147CCEA03A’, @value_name=‘Language’, @value=@Language OUTPUT SET @key = ‘SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist\BOL\’ + CASE CAST (@Language AS varbinary) WHEN 0x0900040000000000 THEN ‘1033\CurrentVersion’ WHEN 0x1900040000000000 THEN ‘1049\CurrentVersion’ END EXECUTE master..xp_regread @rootkey=‘HKEY_LOCAL_MACHINE’, @key=@key, @value_name=‘Version’, @value=@Version OUTPUT IF @ProductName IS NOT NULL SELECT @ProductName AS [Product Name], @Version AS [Version] SELECT @ProductName = NULL, @Version = NULL, @Language = NULL, @key = NULL – 9.0000.7138.2105 – Microsoft SQL Server 2005 Books Online (English) (May 2007) – 9.00.3070 EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\706CF427A4AA23F4CAD1887BDE6AAC58′, @value_name=‘ProductName’, @value=@ProductName OUTPUT EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\706CF427A4AA23F4CAD1887BDE6AAC58′, @value_name=‘Language’, @value=@Language OUTPUT SET @key = ‘SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist\BOL\’ + CASE CAST (@Language AS varbinary) WHEN 0x0900040000000000 THEN ‘1033\CurrentVersion’ WHEN 0x1900040000000000 THEN ‘1049\CurrentVersion’ END EXECUTE master..xp_regread @rootkey=‘HKEY_LOCAL_MACHINE’, @key=@key, @value_name=‘Version’, @value=@Version OUTPUT IF @ProductName IS NOT NULL SELECT @ProductName AS [Product Name], @Version AS [Version] SELECT @ProductName = NULL, @Version = NULL, @Language = NULL, @key = NULL – 10.0000.7116.0234 – Microsoft SQL Server “Katmai” Books Online – 10.0.1019.17 EXECUTE master..xp_regread @rootkey=‘HKEY_CLASSES_ROOT’, @key=‘Installer\Products\E6A80054E319FF94F807C23955CDAB56′, @value_name=‘ProductName’, @value=@ProductName OUTPUT EXECUTE master..xp_regread @rootkey=‘HKEY_LOCAL_MACHINE’, @key=‘SOFTWARE\Microsoft\Microsoft SQL Server Code Name Katmai Redist\BOL\1033\CurrentVersion’, @value_name=‘Version’, @value=@Version OUTPUT IF @ProductName IS NOT NULL SELECT @ProductName AS [Product Name], @Version AS [Version] SELECT @ProductName = NULL, @Version = NULL, @Language = NULL, @key = NULL GO


После того, как BOL стал обновляться через Microsoft Update, этот вопрос, наверняка, будет волновать многих :)
Самое простое, это заглянуть в оснастку установки и удаления программ, которая присутствует в списке панели управления. В ней можно увидеть подобную картину:

Последние выпуски BOL снабжены пометкой в скобках, когда вышла установленная версия. Будем надеяться, что так оно и будет впредь. Однако, не всегда есть возможность получить доступ к изображенной оснастке. В таких случаях, может помочь знание того, в каких ключах системного реестра хранятся эти значения. То, что мы наблюдаем в оснастке, берётся из ветки системного реестра:

HKEY_CLASSES_ROOT\Installer\Products


В этом ключе расположен список идентификаторов установленных продуктов, и каждый такой идентификатор хранит под собой значения различных атрибут продукта, таких, как наименования, версия, локализация и т.п. Можно легко найти все установленные продукты, которые имеют отношение к SQL Server, если начать поиск по реестру, предварительно перейдя в корень показанной ветки, т.е. “подсветив″ ключ Products, и введя в строку поиска фразу: “Microsoft SQL Server”.
Каждая новая версия BOL получает новый идентификатор и мало того, свой идентификатор получает и каждый перевод BOL. Т.е. если Вы установили английскую и русскую редакции BOL, у Вас будет два разных идентификатора, а после того, как вы установите BOL для SQL Server 2008, добавиться ещё и третий. Кроме заметных различий в названиях (текст, который помещён на рисунке в скобках) и различий в идентификаторах, каждое такое издание имеет два варианта внутренних версий. Один вариант версии BOL можно увидеть, если попытаться воспользоваться кнопкой “Отправить отзыв″ (Send Feedback), которая располагается в нижнем колонтитуле каждой статьи BOL. Для доставки отзыва используется обычное письмо, в теме которого можно увидеть примерно такой текст, вначале которого можно заметить внутреннюю версию:

/1:SQL/2:9.0000.7103.1552/3:1.0/4:sqlgtst9/5:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ru/sqlgtst9/html/91ddee3a…


Однако, совершенно другую версию BOL Вы увидите в соответствующем ключе системного реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist\BOL\


Ниже, представлена таблица, в которой сведены названия и разные версии BOL, с которыми на момент написания этого сообщения удалось столкнуться автору:

Название

Version

Feedback

Microsoft SQL Server 2005 Books Online (English)

9.00.1399.06

9.0000.6089.0206

Microsoft SQL Server 2005 Books Online (English) (February 2007)

9.00.3062

9.0000.7028.1803

Электронная документация по Microsoft SQL Server 2005 (на русском языке) (февраль 2007)

9.00.3068

9.0000.7103.1540

Microsoft SQL Server 2005 Books Online (English) (May 2007)

9.00.3070

9.0000.7138.2105

Microsoft SQL Server “Katmai” Books Online

10.0.1019.17

10.0000.7116.0234

Что бы узнать версию BOL подключившись к серверу, например, в Management Studio, и выполнив сценарий на T-SQL, вы можете использовать доступный по следующей ссылке код: BOL Versions (2007/06/06)

О том, как осуществляется загрузка и обновление BOL, можно почитать тут: Загрузка и обновление электронной документации

В тему: Which version of Book Online are you on?

Не первый раз сталкиваюсь с тем, что возникает необходимость узнать, с каким ключом был установлен сервер. Явного способа в документации и в интернет пока найти не удалось, поэтому предлагаю вам свой метод, который не претендует на некое “супер-знание” и применим отнюдь не во всех случаях… Суть метода в том, что информация об использованном ключе храниться в логах установки. В частности, мне удалось найти ключ (хорошо, что я заведомо точно знал – какой) в файле: SQLSetup0001_хххххххххх_Tools.log (где буквы “х” заменяют имя сервера) В этом файле логировались все вносимые в системный реестр изменения, в частности, было видно, что в ветку реестра:

    HСLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ -
    S-1-5-18\Products\D95B8D37FFB0B5B40A13AF3BCA26E965\InstallProperties

Были добавлены параметры, в числе которых:

    DisplayName: Microsoft SQL Server 2005 Tools (64-bit)
    ProductID: ЗНАЧЕНИЕКЛЮЧАДЛЯУСТАНОВКИ

Располагается этот файл по умолчанию в папке:

    C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files

Для Developer Edition значение ключа, похоже, в реестр не записывается. Кроме того, у меня не было возможности проверить действенность этого метода для 32-х битных редакций SQL Server 2005.