이 주제에 대한 응답을 찾고 다른 포럼에 게시했지만 이것은 모든 지식의 글꼴 인 것 같습니다. PowerShell을 사용하여 SQL Server 2000 데이터베이스에서 데이터를 가져 오려고합니다. Powershell 스크립트는 저장 프로 시저를 호출 한 다음 데이터를 추출하고 export-csv를 CSV로 출력합니다. 문제는 출력 된 데이터의 날짜/시간 필드가 밀리 초 손실되었음을 나타냅니다. 이 문제는 PowerShell이 데이터베이스의 데이터를 임시 테이블로 추출 할 때 발생합니다. 다음은 두 가지 코드입니다. 다른 저장 프로 시저 SP_agent
이 소프트웨어에 의해 생성되기 때문에SQL 저장 프로 시저에서 밀리 초 데이터를 추출하십시오.
PowerShell 스크립트
#VARIABLES
$SqlQuery = "SAP_proc"
#Connection Strings
$Server = "server"
$Database = "db_dab"
#Output Files
$OutputPath = "c:\Sapout.csv"
#END OF VARIABLES
#SQL Connection
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SAP_proc"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$DataOut = $SqlAdapter.Fill($DataSet)
#$DataOut = $SqlAdapter.FillSchema($DataSet,[System.Data.SchemaType]::Source)
#Data Manipulation
$DataOut | Out-Null
#Export Data to Hash Table
$DataTable = $DataSet.Tables[0]
#Export Has table to CSV
$DataTable | Export-CSV -Delimiter "," -Encoding Unicode -Path $OutputPath -NoTypeInformation
$SqlConnection.Close()
저장 프로 시저
ALTER proc [dbo].[SAP_proc]
as
DECLARE @return_value int
DECLARE @starttime datetime
DECLARE @endtime datetime
SET @starttime = DATEADD (dd, -30, CURRENT_TIMESTAMP)
SET @endtime = CURRENT_TIMESTAMP
EXEC @return_value = [dbo].[sp_agent]
@starttime
,@endtime
SELECT 'Return Value' = @return_value
나는 그것을 편집 할 수 없습니다. 또한 나는 비주얼 저장 프로 시저이므로 소프트웨어로 정의 된 저장 프로 시저 (SELECT가 datetime에 대해 varchar로 변환 됨)를 내 명령 텍스트 문자열에 복제하고 싶지 않습니다.
도움이 될 것입니다.
아니요. 불행히도 없습니다. 내가 저장 프로 시저 SAP_proc (dateadd 및 current_timestamp를 사용할 수 있도록 만든)를 실행하면 밀리 초 단위의 DateTime이 반환되고, 스크립트를 단계별로 실행할 때 PowerShell의 DataSet으로 추출 할 때 문제가 발생하고 DataTable을 다음과 같이 표시합니다. 그것을 CSV로 내보내는 것에 반대하여 밀리 초 데이터가 없습니다. SQL 관리자를 통해 SP를 실행하고 결과 표를 CSV로 내보내는 경우 밀리 초 데이터가 있습니다. 예, SP_agent의 이름이 잘못되었습니다. 나는 서버에서 소프트웨어를 만들지 않았다. – wbbigdave