我正在使用下面的Powershell代碼來調用將執行一些工作的SP。 SP有動態sql,並且在下面。我從中拉出的文件有數據。事實上,當我直接從SQL運行proc時,它工作正常,所以PS以某種方式不喜歡這個調用。任何人都可以在這裏看到什麼錯唯一我能想到的是動態SQL不會通過PS運行...... ??Powershell:使用動態sql運行存儲過程不起作用
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=myserver;Database=Stats;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "spCSVToSQL 'H:\Stats\Stats.csv'"
$SqlCmd.Connection = $SqlConnection
$SqlConnection.Open
$sqlCmd.ExecuteNonQuery
$SqlConnection.Close
===================================================================================
ALTER procedure [dbo].[spCSVToSQL] @filePath varchar(250)
as
Begin
declare @sql varchar(2500) =
'CREATE TABLE ##Stats
(
[StatDate] [varchar](50) NULL,
[Server] [varchar](50) NULL,
[DriveLetter] [varchar](50) NULL,
[Label] [varchar](50) NULL,
[Capacity] [varchar](50) NULL,
[FreeSpace] [varchar](50) NULL,
[PercFree] [varchar](50) NULL,
[PercFrag] [varchar](50) NULL
)
BULK INSERT ##Stats
FROM ''' + @filePath + '''
WITH (FIELDTERMINATOR = '','', FIRSTROW = 2, ROWTERMINATOR = ''\n'')
INSERT INTO [cStats].[dbo].[StatInfo]
SELECT Convert(VARCHAR, RTRIM(LTRIM(REPLACE([StatDate], ''"'',''''))), 113)
,CONVERT(VARCHAR, RTRIM(LTRIM(REPLACE([Server], ''"'',''''))))
,CONVERT(VARCHAR, RTRIM(LTRIM(REPLACE([DriveLetter], ''"'',''''))))
,CONVERT(VARCHAR, RTRIM(LTRIM(REPLACE([Label], ''"'',''''))))
,CONVERT(BIGINT, RTRIM(LTRIM(REPLACE([Capacity], ''"'',''''))))
,CONVERT(BIGINT, RTRIM(LTRIM(REPLACE([FreeSpace], ''"'',''''))))
,CONVERT(INT, RTRIM(LTRIM(REPLACE([PercFree], ''"'',''''))))
,CONVERT(INT, RTRIM(LTRIM(REPLACE([PercFrag], ''"'',''''))))
FROM ##Stats
drop table ##Stats'
exec(@sql)
End
「PS以某種方式不喜歡這個電話」不是一個很好的描述正在發生的事情。你能否確切描述你正在觀察的行爲?你有沒有看到任何錯誤?如果是,那麼錯誤信息文本是什麼? – 2011-05-19 22:39:10