在我的Visual Studio(C#)解決方案中,我有一個名爲stored procedures
的文件夾,其中包含大量含有T-SQL的.sql
文件。使用C#將解決方案文件夾中的存儲過程添加到SQL Server數據庫中
下面是一個例子:
-- =============================================
-- Author: Foo Bar
-- Create date: 28-12-2016
-- Description: Create XrefUsers
-- =============================================
CREATE PROCEDURE [dbo].[spCreateXrefUsers]
AS
BEGIN
我希望所有這些存儲過程添加到我的數據庫。
因此,我複製了所有.sql
文件,將副本更名爲.tt(T4文件擴展名),並將TextTemplatingFilePreprocessor
設置爲customtool。
現在,我寫了這個代碼,添加存儲過程:
public bool AddStoredProcedures()
{
try
{
//spCreateXrefUsers_sql.tt
CreateStoredProcedure(new spCreateXrefUsers_sql().TransformText());
}
catch (Exception ex)
{
return false;
}
return true;
}
private static void CreateStoredProcedure(string spText)
{
var connectionString = MigrateHelpers.GetConnectionStringQA();
//var commandText = string.Format("EXEC sp_executesql {0}", spText);
using (SqlConnection connection = new SqlConnection(connectionString))
{
//SqlCommand command = new SqlCommand(commandText, connection);
SqlCommand command = new SqlCommand(spText, connection);
command.CommandType = CommandType.Text;
command.Connection.Open();
command.ExecuteNonQuery();
}
}
,但我得到了以下錯誤:
Incorrect syntax near 'GO'.
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.
Incorrect syntax near 'GO'.
我已閱讀:GO (Transact-SQL)
所以,我想:
spText = spText.Replace("GO", "");
但是,這仍然讓我與
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.
錯誤。
我應該在我的代碼中更改哪些內容以便能夠執行T-SQL?
我可能是這樣做的全部錯誤。請賜教!
也許我應該創建一個新的SQL CLR database project
當我打開Visual Studio中的.SQL文件我能執行=>手動創建存儲過程。那麼我應該可以從代碼中做到這一點嗎?
您正在使用Visual Studio數據庫項目。你知道你可以在沒有定製工具的情況下部署這些腳本,對吧? –
它實際上不是VS數據庫項目。 –
幾件事情,當你創建你的過程腳本時,一定要刪除(如果存在),然後創建,以便運行該腳本是可重複的,還包括任何確保正確安全所需的授權語句。然後,在查找單詞'GO'時,請理解Microsoft在腳本中的位置。請參閱鏈接https://msdn.microsoft.com/en-us/library/ms188037.aspx。聽起來就像在你的情況下,你可能有一個腳本缺少它是終止GO語句。 – Mike