Sir*_*lot 6 sql-server powershell sql-server-2012
我必须提供有关文件系统使用情况的报告。
我正在收集有关文件服务器使用情况的统计数据,具体到单个文件级别,以便我们可以查看谁在使用哪些文件/文件夹、他们使用了多少存储空间、他们拥有多少文件、创建时间和上次使用时间。
为此,我有 2 个 powershell 脚本。
第一个读取文件系统并捕获我想要的属性并将它们保存到文件中。
dir -rec G:\ | Select LastWriteTime, Directory, Name, Extension, Length, @{Name="Owner";Expression={get-acl $_.FullName| select Owner}} | export-csv FileInfo.csv
Run Code Online (Sandbox Code Playgroud)
第二个脚本读取 csv 文件并将数据插入表中。
一旦数据在 SQL 中,我可以解析文本并将其拆分为不同的列,然后生成各种报告并以不同的方式分析数据。我的方法有效,但很麻烦。
有没有更好的方法来收集 NTFS 信息并将其保存到 SQL Server 中?有哪些替代方案?情报局?
编辑:这一切可以组合在一起在一个过程中一起运行吗?
SSIS 能够很好地处理 CSV 文件并将它们加载到 SQL Server 中。
对话和设置是一个熟悉的windows“向导”之类的过程,而且大部分是自动化的……你需要注意的是它已经正确地猜测了你的文件的长度和数据类型。您可以在连接管理器中调整设置,也可以稍后使用 SSIS 任务更改数据类型。请注意,如果您说 10,000 行整数,然后开始获取字符,则平面文件源可能很容易为该列分配整数数据类型,然后在遇到字符时失败。因此,对于可能结构不佳的大文件,您必须更加注意这些设置。该Suggest Types...按钮允许您增加检查行的数量,但我发现即使这样仍然可以推荐错误的数据类型。
SSIS 是一个巨大的工具,您可以执行数据清理任务,甚至可以将数据从单个 CSV 拆分到不同的表中。如果您有不同的表,请使用Multicast或 之类的任务Conditional Split。您可能还会发现,Data Conversion并且Derived Column可以帮助您在数据在您的包裹中移动时有效地生成所需的数据。
不过,除了使用 SSIS 清理、拆分、修改和将数据加载到 SQL Server 中之外,我不会做更多的事情。SQL Server 已高度优化以生成聚合、排序等,而 SSIS 不太适合此类任务。诸如阻塞转换之类Aggregate的任务本质上意味着它可以停止您的 SSIS 包并消耗大量内存。
作为示例,以下 SSIS 数据流执行以下任务: