Sql server 2012 将SQL Server 2012报告安排到SFTP

Sql server 2012 将SQL Server 2012报告安排到SFTP,sql-server-2012,scheduled-tasks,sftp,Sql Server 2012,Scheduled Tasks,Sftp,我需要每晚自动上传报告,并使用SFTP传输。我可以在SQL Server 2012中创建报告,但如何以平面文件格式(.csv/.txt)将其自动保存到特定文件夹 保存后,需要计划使用SFTP进行上传和传输。有人能给我建议和帮助吗?非常感谢你 更新:这里是提取部分。我使用SQLCMD在windows任务管理器中创建了一个.bat文件。现在我可以使用WinSCP命令将其安排为自动上载。只是想为未来的用户更新答案 SQLCMD -S Servername -d databasename -U user

我需要每晚自动上传报告,并使用SFTP传输。我可以在SQL Server 2012中创建报告,但如何以平面文件格式(
.csv
/
.txt
)将其自动保存到特定文件夹

保存后,需要计划使用SFTP进行上传和传输。有人能给我建议和帮助吗?非常感谢你

更新:这里是提取部分。我使用SQLCMD在windows任务管理器中创建了一个.bat文件。现在我可以使用WinSCP命令将其安排为自动上载。只是想为未来的用户更新答案

SQLCMD -S Servername -d databasename -U username -P password -i C:\sample.sql -o C:\sampletemp.txt -s"|" -W
findstr /B /V /C:"----" "C:\sampletemp.txt" > "C:\finaloutput.txt"
del "C:\sampletemp.txt"

要使用WinSCP设置SSIS SFTP任务,请执行以下操作:

  • 在VisualStudio中

  • 在项目中添加新的执行流程任务

  • 将其指向带有参数的
    winscp.exe
    可执行文件以启动上载脚本

    有关详细信息,请参阅WinSCP指南


(我是WinSCP的作者)

如果您有SQL Server标准或企业版,那么您就有SSI。如果您有SQL Server Web或更好的(即,不是Express),那么您就有SQL代理

“如何使用SSIS?”是一个超出堆栈溢出问题范围的问题。这是一个完整的ETL包。微软有一些你可以通过,但它是一个非常深刻的系统

你应该这样做。微软打算让人们怎么做。您还可以使用导入/导出向导,该向导允许您在向导末尾保存SSIS包以供以后使用。不过,这对编写WinSCP传输脚本没有帮助

如果这感觉像是用大锤敲钉子(或者您在SQL Express或Web上),那么最基本的方法就是使用PowerShell脚本。在2008/2008 R2中有
SqlServerCmdletSnapin100
管理单元。从2012年开始,这就变成了
SQLPS
模块。请注意,管理单元(
Get-PSSnapin-Registered
)与模块(
Get-Module-listavable
)不同,但它们的功能非常相似;模块只是更新了,好吧。它们都有
调用Sqlcmd
。如果您没有在运行脚本的计算机上安装SQL Server,也可以在System.Data.SqlClient中使用.Net方法,但这要复杂一些

因此,您可以执行以下操作:

#Add the relevant snap-in/module; for 2012 that's sqlps
#Add-PSSnapin SqlServerCmdletSnapin100;
Import-Module sqlps;

#Fetch the data
$Query = 'SELECT Field1, Field2, Field3 FROM MyView ORDER BY Field1;';
$Data = Invoke-Sqlcmd -Server MyServer -Database MyDatabase;

#Save data to file
$Data | Export-Csv -Path 'C:\Script\MyExportFile.csv' -NoTypeInformation;

#Run the WinSCP script to upload the data
#Note that --% is Powershell's "Stop parsing" operator; it keeps the parser from messing with the arguments.
&"C:\Program Files (x86)\WinSCP\WinSCP.exe" --% -console -script="C:\Script\WinSCPScript.txt" -log="C:\Script\Logs\WinSCP-!S-!Y-!M-!D-!T.log" -xmlgroups

然后,您只需编写WinSCP脚本文件,并使用Windows任务调度器计划脚本。

有很多方法可以做到这一点。我使用WinSCP与SFTP进行传输,SSI进行导入/导出并执行WinSCP,SQL代理进行调度。我们还将使用WinSCP。目前,我创建并运行报告。但是,我们没有使用SSIS或SQL代理功能。我怎样才能知道我们是否有能力做到这一点,你有关于我如何做到这一点的好的分步教程吗?可能与任务计划程序有关??谢谢。我们正在考虑使用Windows任务计划程序或Sql Server代理。@有关任务计划程序的限制,请参阅WinSCP指南。谢谢。我会调查的。我们有WindowsServer2008R2。