テーブル名を抽出して GRANT アクセスを作成するこれらの SQL DB 作成スクリプトがあります。
実際の名前を抽出することは問題ではありません:
^CREATE TABLE ([\w\.]+)[\r\n]+
ただし、Regex.Replace
これらの名前 (グループ 1) から GRANT ステートメントを作成するだけの場合は、削除したい一致しないすべての行で立ち往生しています。
例えば
為に:
CREATE TABLE dbo.t_MyType
(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType (TypeName)
CREATE TABLE dbo.t_MyType2
(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType2 (TypeName)
私は得る:
GRANT SELECT ON dbo.t_MyType TO db_read(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType (TypeName)
GRANT SELECT ON dbo.t_MyType2 TO db_read(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType2 (TypeName)
質問は次のとおりです。次の結果を得るために使用する必要がある正規表現と置換文字列のペアは何ですか?
GRANT SELECT ON dbo.t_MyType TO db_read
GRANT SELECT ON dbo.t_MyType2 TO db_read