サーバーにSSISカタログがある場合、 SQL Server 2014 SP1 のインストールは失敗します。その後、サーバーは起動しません。システムデータベースの再構築は役に立ちませんでした(確かに、おそらくシステムデータベースが実際に破損していないため、実際には再構築されなかった可能性があります)。
3188行目のSP1に同梱されているスクリプトSSIS_hotfix_install.sqlにバグがあります。
CREATE NONCLUSTERED INDEX [IX_internal_object_parameters_inc] ON [internal].[object_parameters]
SSISDBをアップグレードすることになっているスクリプトがマスターデータベースで実行されている間、彼らはテーブルに2部構成の名前を使用しました。
スクリプトはデフォルトでC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install
にありますが、サーバーの起動時に実行するためにそこから取得することはないようです。
おそらくsqlscriptupgrade.dll
にあるC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn
から取得します。そのスクリプトの実行をバイパスしてサーバーを起動する方法を誰かが知っていますか?
トレースフラグ902 を使用してSQL Serverを起動します。これにより、アップグレードスクリプトの実行がバイパスされます。
スタート->すべてのプログラム-> Microsoft SQL Server 2008 R2またはインストールされている最も高いバージョン->構成ツール-> SQL Server構成マネージャー
SQL Server構成マネージャーで、[SQL Serverサービス]をクリックします。
右側のウィンドウで、[SQL Server()]を右クリックし、[プロパティ]をクリックします。
[起動パラメーター]タブの[起動パラメーターの指定]ボックスにパラメーター(この場合はトレースフラグ-T902)を入力し、[追加]をクリックします。これで、以下のようなSQL Server Istance起動パラメーターが表示されます。SQL Server Istance起動パラメーター
OKをクリックします。
- データベースエンジンを再起動します。
- SQL Server Management StudioからSQL Serverインスタンスに接続し、修正アクションを実行して、スクリプトのアップグレードが失敗する原因となっているエラーを解決します。
- 最後に、SQL Server構成マネージャーから-T902トレースフラグを削除します。
- SQL Serverインスタンスを再起動します
- エラーログを確認して、スクリプトのアップグレードが正常に完了したことを確認します
次に、SSIS_hotfix_install.sqlスクリプトを手動で実行します(3188行目にSSISDB.
を追加した後)。
私は提案された手順を試してみました-それはうまくいくことができませんでした。その後の起動時に、-T902トレースフラグを削除した後、サーバーはdllにコンパイルされた同じスクリプト(上記を参照)を実行しようとしますが、変更できません。スクリプトは、それに含まれる変更がすでに適用されていることを検出しないので、馬鹿げています。私が考えることができる汚い回避策は、スクリプトがそれにインデックスを構築して成功させるためにマスターデータベースにそのテーブルを作成することです。私はこれをテストし、それは働いた。手順全体:
USE master; GO create schema internal; go CREATE TABLE [internal].[object_parameters]( [parameter_id] [bigint] IDENTITY(1,1) NOT NULL, [project_id] [bigint] NOT NULL, [project_version_lsn] [bigint] NOT NULL, [object_type] [smallint] NOT NULL, [object_name] nvarchar NOT NULL, [parameter_name] [sysname] NOT NULL, [parameter_data_type] nvarchar NOT NULL, [required] [bit] NOT NULL, [sensitive] [bit] NOT NULL, [description] nvarchar NULL, [design_default_value] [sql_variant] NULL, [default_value] [sql_variant] NULL, [sensitive_default_value] varbinary NULL, [base_data_type] nvarchar NULL, [value_type] char NOT NULL, [value_set] [bit] NOT NULL, [referenced_variable_name] nvarchar NULL, [validation_status] char NOT NULL, [last_validation_time] datetimeoffset NULL, CONSTRAINT [PK_Object_Parameters] PRIMARY KEY CLUSTERED ( [parameter_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-T902起動パラメーターを削除し、サーバーを再起動します
実行してマスターデータベースをクリーンアップする
use master; drop table [internal].[object_parameters]; drop schema internal;
上記のように3188行目を修正した後、SSIS_hotfix_install.sqlを手動で実行します。
サーバーを再起動します。
手順の最後に修正されたSSIS_hotfix_install.sqlを実行する理由は、SQL Serverがアップグレードが正常に完了したと見なす前に、dllに埋め込まれたバグのあるスクリプトがその後の起動時にインデックスを削除しないようにするためです。