Перейдите в папку, где находится корневой каталог вашего проекта, и:
xcodebuild -project projectname -activetarget -activeconfiguration archive
exec sp_execsql @Sql
Изменение БД длится только до завершения @sql
http://blog.sqlauthority.com/2007/07/02/sql-server-2005-comparison-sp_executesql-vs-executeexec/
Проблема с первым состоит в том, что вы делаете ИСПОЛЬЗУЙТЕ 'myDB'
, а не ИСПОЛЬЗУЙТЕ myDB
.
вы передаете строку; но USE ищет явную ссылку.
Последний пример мне подходит.
declare @sql varchar(20)
select @sql = 'USE myDb'
EXEC sp_sqlexec @Sql
-- also works
select @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql
попробуйте следующее:
DECLARE @Query varchar(1000)
DECLARE @DatabaseName varchar(500)
SET @DatabaseName='xyz'
SET @Query='SELECT * FROM Server.'+@DatabaseName+'.Owner.Table1'
EXEC (@Query)
SET @DatabaseName='abc'
SET @Query='SELECT * FROM Server.'+@DatabaseName+'.Owner.Table2'
EXEC (@Query)
Используйте exec sp_execsql @Sql
Пример
DECLARE @sql as nvarchar(100)
DECLARE @paraDOB datetime
SET @paraDOB = '1/1/1981'
SET @sql=N'SELECT * FROM EmpMast WHERE DOB >= @paraDOB'
exec sp_executesql @sql,N'@paraDOB datetime',@paraDOB
Если SQLCMD является опцией, он поддерживает скриптовые переменные сверх того, что может делать обычный T-SQL. Например: http://msdn.microsoft.com/en-us/library/ms188714.aspx
-- If you are using a variable for the database name.
-- Try something like this.
DECLARE @DBName varchar(50)
Set @DBName = 'Database1'; /* could be passed in by a parameter. */
IF( @DBName = 'Database1')
Begin
USE [Database1];
SELECT FROM Table1;
End
IF( @DBName = 'Database2')
Begin
USE [Database2];
SELECT FROM Table2;
End
IF( @DBName is null)
Begin
USE [Database1];
End