【发布时间】:2017-05-03 20:31:07
【问题描述】:
我有一个正在处理的函数,我需要该函数能够将结果写入 SQL 数据库。在这个函数内部,我调用了另一个名为:Get-svnLogData 的函数,该函数提取有 4 列的信息。 我非常了解 powershell 编码,我迫切需要帮助。
Function SQL-BulkInsert{
[CmdletBinding()]
Param
(
#The name of the instance, if there is one
[Parameter(Mandatory=$false,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$false,
ValueFromRemainingArguments=$false,
Position=1)]
[string]$SQLInstance = "InstanceName",
[string]$DatabaseName = "DBName",
[string] $tableName = "dbo.CheckiList"
)
$Query="USE DBName
IF OBJECT_ID(N'[dbo].[CheckiList]', N'U') IS NOT NULL
DROP TABLE dbo.CheckinList
CREATE TABLE [dbo].[CheckinList] (
[Author] varchar(200) NULL,
[Revision] [varchar](20) NOT NULL,
[Msg] [varchar](100) NULL,
[Path] [varchar] (250) NULL)"
Invoke-Sqlcmd -ServerInstance "InstanceName" -Database "DBNmae" -Query $Query
$connection = new-object System.Data.SqlClient.SqlConnection;
$connectiomn.Open()
$DataTable = Get-SvnLogData | Format-Table -AutoSize
$bc = new-object ("System.Data.SqlClient.SqlBulkCopy") $connection
$bc.DestinationTableName = "dbo.CheckiList"
$bc.WriteToServer($datatable)
Write-SqlTableData -ServerInstance $SQLInstance -DatabaseName $DatabaseName -SchemaName dbo -TableName dbo.CheckinList -InputData $DataTable
}
我收到此错误:“Write-SqlTableData”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径
请帮助我修复我的代码或向我展示另一种方法。尝试解决此问题已 7 天,但无法弄清楚如何将数据插入 SQL 数据库
【问题讨论】:
-
你导入了SQLServer模块了吗?
-
@JeffZeitlin,是的,我试过了,但我遇到了无数错误,见下文:在模块“SqlServer”中找到了“Write-SqlTableData”命令,但无法加载该模块。有关更多信息,请运行“Import-Module SqlServer”。
-
@JeffZeitlin 如果我按照上述错误运行:'Import-Module SqlServer',然后我得到另一个错误,见下文: Import-Module:加载扩展类型数据时发生以下错误文件:TypeData“Microsoft.SqlServer.Management.Smo.NamedSmoObject”中的错误:成员 DefaultKeyPropertySet 已存在。 TypeData“Microsoft.SqlServer.Management.Smo.NamedSmoObject”中的错误:成员 DefaultDisplayPropertySet 已存在。
-
除上述之外,这是怎么做的:Install-Module SqlServer -Scope Currentuser
-
从新的 PowerShell 会话中重试。
标签: powershell