问题标签 [smo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5178 浏览

sql-server - 如何使用 SMO 查找正在执行的 SqlAgent 作业的 SPID

通过使用 Server.JobServer.jobs 获取作业列表的 SMO 对象,我可以找到每个作业的状态。对于那些当前正在执行的,我想找到它正在执行的 SPID。我还可以使用 Server.EnumProcesses() 获取服务器进程的列表。这给了我当前活动的 SPID 的列表。我想匹配两者。

我能想到的最好的方法是将 jobid 转换为字符串,并将 jobId 从 EnumProcesses 表中的程序字符串中取出(至少在我的系统上,该表将 jobId 嵌入到此描述中)。这真的很难看,有几个原因,其中最重要的原因是程序描述中的 Guid 和 jobID 的 guid 在字符串表示的前 3 段中切换了它们的字节。呸。

有没有更好的方法使用 SMO 来做到这一点?

0 投票
3 回答
1002 浏览

c# - 有没有办法加速现有数据库的 SQL Server 管理对象遍历?

我目前正在使用 SMO 和 C# 来遍历数据库以创建代表两个数据库各个方面的设置树,然后比较这些树以查看它们的不同之处和方式。

问题是,对于 2 个大小合理的数据库,在本地抓取它们并收集我希望比较的表/列/存储过程信息需要将近 10 分钟。

有没有比 SMO 更好的界面来以这种方式访问​​数据库?我不想包含任何额外的依赖项,但我会为提高 50% 的速度而感到痛苦。下面是我如何枚举表和列的示例。

0 投票
1 回答
1745 浏览

c# - 使用 smo 重命名数据文件

如何使用 SMO 重命名物理 .mdf .ndf .ldf 文件。 这篇文章很有帮助,但我需要使用 C# SMO 对象。

使用 SMO 服务器对象,我可以检索数据库,然后访问 DataFile 对象。根据这个链接。这些有重命名,但是重命名后,没有任何变化。

0 投票
2 回答
765 浏览

c# - SMO 脚本对象和安全性

我有一个客户在托管服务器上有一个 SQL 数据库;调用数据库“myDatabase”。

托管公司 已锁定对象资源管理器 - 我在列出的数据库中看不到 myDatabase(我看到 tempdb 和 master)。但是,如果我“使用 myDatabase”然后“从 myTable 中选择 *”,一切正常。

由于我们无法访问对象资源管理器,因此我无法右键单击并生成脚本。我以为我可以使用 SMO 来完成我想要的,但是当我尝试类似的事情时:

它失败了 - myDB 为空(当我遍历数据库集合时,正如预期的那样,我只看到 master 和 tempdb - 我可以在对象资源管理器中看到的 db)。这显然与安全有关——如果我在对象资源管理器中看不到表,它不会让我通过 SMO 访问它。任何人都对允许我生成脚本的解决方法或替代方法有任何想法?

谢谢!

0 投票
3 回答
2953 浏览

sql-server - 从 SQL Server SMO 编写表时如何更改表名

假设我有一个表“foo”,我想使用 SMO 编写脚本。有没有办法让生成的脚本中的表具有不同的名称,例如“foo2”?

如果这样做,当我尝试设置 foo.Name 时会出现此异常:

“无法对此对象执行操作,因为该对象是集合的成员。”

有没有办法用 SMO 做到这一点?

0 投票
2 回答
7352 浏览

c# - 如何获取外键引用的表

我有一个小问题我还没有找到答案:我如何在 c# 中使用 Microsoft.SqlServer.Smo 获取外键列所指的表?

0 投票
9 回答
109087 浏览

sql-server - 以编程方式检索与 SQL Server Management Studio gui 返回的源相同的 SQL Server 存储过程源?

关于如何以编程方式从 SQL Server 2005 中获取完全相同的存储过程源的任何指针,就像我在 SQL Server Management Studio 中右键单击该存储过程并选择修改时一样?

我正在尝试使用 SMO,但存在一些文本差异。该过程始终具有 CREATE,而不是 ALTER,并且标头中存在一些差异,例如我以编程方式获得的版本中缺少 GO。我可以解决这些问题,但也许有更好的方法?

同样,我在 SQL Server 2005 中,使用 SMSE。通过 Visual Studio 8 2008 使用 SMO。

更新:得到了一些答案,告诉了如何检索存储过程的基础知识。我正在寻找的是检索与 GUI 生成的文本相同(或几乎相同)的文本。

示例:对于 sp_mysp,在 Management Studio 中单击鼠标右键,选择修改。这会产生:

我想以编程方式获得相同的东西(注意标题中的 GO,以及它是一个 ALTER PROCEDURE 的事实。理想情况下,我希望通过对检索到的源进行最少的编程修复来获得它。

我很乐意只得到与 Script Date details 不同的东西。. .

0 投票
5 回答
14887 浏览

sql-server - Sql SMO:如何获取数据库物理文件名的路径?

我正在尝试返回数据库的 mdf/ldf 文件的物理文件路径。

我尝试使用以下代码:

但是,这会引发异常“'database.PrimaryFilePath' 引发了类型为 'Microsoft.SqlServer.Management.Smo.PropertyNotSetException' 的异常 - 即使我正在针对它运行的数据库存在,并且它的 mdf 文件位于 c:\程序文件\Microsoft SQL Server\MSSQL.1\MSSQL

我究竟做错了什么?

0 投票
2 回答
856 浏览

c# - 使用 SMO 查找最近的备份

有谁知道如何使用 SMO 查找数据库的最新备份?

0 投票
6 回答
36847 浏览

sql-server - SQL Server SMO 抱怨缺少 DLL

好的,我已经搜索了网络,BOL,各种论坛,但我离答案还很近……希望你们这些好人可以伸出援助之手……

我们在网络上有十几个 SQL Server(一些 2k,一些 2005)。我在 .NET 应用程序中使用 SMO 对象来获取一些标准信息。我的问题似乎归结为缺少 DLL - Microsoft.SqlServer.BatchParser.dll。但是,此 DLL 不附带其他 SQL DLL(Microsoft.SqlServer.ConnectionInfo.dll、Microsoft.SqlServer.Smo.dll、Microsoft.SqlServer.SmoEnum.dll、Microsoft.SqlServer.SqlEnum.dll 等...) . 我还从 Microsoft 的站点下载了包含 SMO 对象的 SS2005 功能包,但仍然没有运气。

以下代码有效,除非我取消注释当前注释的行,在这种情况下,我会收到以下错误:

错误:无法加载文件或程序集“Microsoft.SqlServer.BatchParser,Version=9.0.242.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。该系统找不到指定的文件。

请注意,我也使用 VB.NET 从 SSIS 尝试过这个,同样的行为。

任何想法将不胜感激。

谢谢。