У меня есть программа установки, которая устанавливает базу данных. База данных создается рядом с некоторыми входами. Для создания логинов я использую основную базу данных в элементах SqlString. Доступ к основной базе данных предоставляется только тем пользователям, которые имеют очень высокие привилегии на сервере SQL. Зачастую установка прерывается, поскольку строка SQL, предназначенная для основной базы данных, не может быть выполнена из-за отсутствия прав.Можно ли экспортировать результат строк, отредактированных SqlString?
Я хочу отредактировать мой установщик, так что, когда элемент SqlString не может быть выполнен, SQL-часть установки должна быть пропущена. После завершения установки я хочу, чтобы пользователь мог сам выполнять инструкции SQL. Каждое действие SQL, принятое моим установщиком, хранится в элементах SqlString. Элементы SqlString содержат много свойств, которые заменяются во время установки. Я хочу извлечь содержимое всех отредактированных элементов SqlString в один файл sql, хранящийся в каталоге пользователя.
Я предполагаю, что мне придется написать настраиваемое действие, которое происходит после того, как sqlextension заменит свойства. И тогда мне придется получить доступ к этим измененным строкам. Есть ли способ сделать это?
Пример SqlString элемент:
<sql:SqlDatabase Id="MasterDB" Server="[SQLSERVER_SERVER]" Instance="[SQLSERVER_INSTANCENAME]" Database="master" />
<sql:SqlString
SqlDb="MasterDB"
Id="CreateNetworkServiceAccount"
ExecuteOnInstall="yes"
ContinueOnError="no"
SQL="IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'{[WIX_ACCOUNT_NETWORKSERVICE]}')
CREATE LOGIN [\[]{[WIX_ACCOUNT_NETWORKSERVICE]}[\]] FROM WINDOWS WITH DEFAULT_DATABASE=[\[]master[\]]"
Sequence="101"/>
Пример файла SQL Я хотел бы иметь после того, как SqlStrings потерпели неудачу:
USE master;
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'NT AUTHORITY\Network Service')
CREATE LOGIN [NT AUTHORITY\Network Service] FROM WINDOWS WITH DEFAULT_DATABASE=[master]