SQL Server Management Studio 2012:如何在SSMS项目中包含文件夹?


17

我正在使用SSMS 2012与我们使用的SQL Server 2012和Azure SQL服务器进行通讯。我承认我不是SQL专家,所以我一直在保存大多数SQL脚本以供将来参考。我很快在SSMS项目中遇到了20个左右的.SQL脚本,它们都位于同一个“查询”文件夹下。

有没有一种方法可以在项目中创建“子文件夹”,以便我可以正确地组织脚本?其他大多数人如何使他们的脚本井井有条?我很确定这是否会像我一样困扰新手,对于真正的管理员(可能有数百个脚本?),这一定是一个真正的问题。


2
我有一个朋友,他把所有脚本都保存在一个大.sql文件中。这样,您只需要跟踪一个文件即可。
Max Vernon

我知道有些人只是将他们保存在与他们的DropBox帐户同步的文件夹中。然后将其保存在他们的SkyDrive上。我不是真正使用SSMS中的项目的人。
肖恩·梅尔顿

这是脚本管理器可以来方便,如果你习惯了它。尽管我喜欢它,但对我来说却没有点击。我只喜欢将脚本保存在本地,放在我备份到DropBox的某些文件夹中。也从不喜欢SSMS项目。
玛丽安2012年

您可以使用SQLTreeo,这里是工具:sqltreeo.com

Answers:


7

最后,在SSMS 2016中使子文件夹成为可能。

谨慎的用户:您可以安装SSMS 2016,但仍旧使用旧版本。请参阅[1]下面的注释。

到达那里后,开始使用解决方案而不是project


子文件夹的工作方式如下:

添加解决方案子文件夹:

  1. 右键单击解决方案项目(树根),然后从菜单中选择添加 > 新建解决方案文件夹
  2. 现在,步骤1也可以在您添加的任何文件夹上使用。

添加SQL脚本:

  • 右键单击任何文件夹,然后从其“ 添加”菜单中添加现有的SQL文件或新的SQL文件(在列表中,找到具有SQL扩展名的项目类型)。

您的好旧项目(坏旧项目)

  • 如果您发现解决方案由于某些传统原因而受益,例如托管连接等,您仍然可以在解决方案中托管项目。只需将新项目添加或导入现有项目即可。

[1] 关于升级:

  1. SSMS 2016正式支持SQL Server 2008-2016。有关更多信息,请参见下载页面。对于较旧的版本,您可以保留自己喜欢的旧SSMS,请参阅下面的第2点。

    • 唯一可能需要引起您注意的设置是“ 选项” >“ SQL Server对象资源管理器” > “服务器版本的脚本” >(设置服务器版本)
  2. 不同的SSMS版本可以很好地生活在一起,即,您可以将SSMS 2008和SSMS 2016一起安装而没有问题–经过测试。


这很方便。值得注意的是,SSMS会将所有这些文件都以平面文件结构存储在单个目录中,因此您不能在两个不同的文件夹中拥有相同名称的文件。
2016年

@乔恩-这不是真的。乍一看可能会令人困惑,但是项目树中显示的文件和文件夹结构与磁盘上文件的位置无关。在磁盘上,它不必是平坦的(只需尝试将新文件保存在其他位置...),就可以根据需要将它们分发到目录中。换句话说:将文件保留在文件系统中的任何目录中,然后可以将它们添加到SSMS项目树中的任何虚拟文件夹中。(如果我没记错的话,甚至可能会重复引用。)缺点:您需要将文件组织两次-在目录和项目文件夹中。
miroxlav '16

6

在SSMS,如果你是不是已经显示模板浏览器管理单元,进入菜单,查看,模板资源管理器(热键Ctrl- - )。AltT

模板是从本地计算机上的此文件夹中加载的

C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ SqlWorkbenchProjectItems \ Sql

您可以根据需要添加子文件夹,甚至可以嵌套它们(通过Windows资源管理器或SSMS)。如果我没有记错的话,每次SSMS启动时,文件夹仅加载一次,因此您可能必须重新启动SSMS才能从文件系统中获取文件夹更改。

p / s-此方法重新利用模板浏览器来组织项目脚本!


距离答案还很遥远,但这是到目前为止建议的最少的混搭技巧!感谢您的分享,我
将再

4

可悲的是,SSMS项目不支持子文件夹。如果您正在谈论SQL将内容保存到的默认文件夹,可以,您可以在其中创建子文件夹。那只是硬盘上的一个文件夹。该文件夹默认位于“ C:\ Users {用户名} \ Documents \ SQL Server Management Studio \ Projects”中。


2

缺少子文件夹无疑令人沮丧。我将尝试在同一解决方案中将我的东西组织到单独的项目中。每个文件夹都有一个Queries文件夹...我将以命名子文件夹的方式命名项目(如果可以创建它们的话!)。


1

通过在C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ SqlWorkbenchProjectItems \ Sql中重新使用模板,可以在上面的答案3中添加解决方法。

您必须向计算机用户帐户添加“完全控制”权限。(右键单击目标文件夹,“属性”,选择机器用户,“编辑”等)

即使那样,就像史蒂夫·巴尔默(Steve Balmer)还是在通过时就解决了这个问题。您可以在此处保存文件,但是在SSMS中打开文件时,不会以该.sql文件的名称打开文件,这是通用名称。因此,所有这些繁琐的工作只是为了使您的查询,函数,表脚本,存储过程等都井井有条。

很好的答案,但是在Windows 8.1上却被排除在外。

我最好的答案是通过SSMS保存到文件系统,我认为它将尊重.sql文件的嵌套。我必须在Visual Studio 2013中创建一个数据库项目,在其中可以设置文件夹,因为它们对我的产品流程有意义。

但是我无法通过Visual Studio中的服务器资源管理器打开这些查询...但是,如果它们在工作中,SPROC脚本,UDF脚本等,则可以在一个地方组织查询。

用另一位受访者的话说,没有IDE可以进行这种项目工作,是的,这很可悲。

这里有点杂乱无章的事情...换句话说,我可以在VS 2013中使用数据库项目获得我想要的文件夹结构,但是如果我想登录到远程服务器进行测试,则必须从文件中逐个访问它们SSMS。背面疼痛...我想要一个能做到这一点的IDE


0

通过手动编辑SSMS项目文件以在解决方案下方添加文件夹,我取得了进步。在文本编辑器中打开.ssmssqlproj文件。搜索名为LogicalFolder的节点。“杂项”节点是您需要执行的操作的良好模型。

只需复制这些行并将名称更改为要查看的文件夹即可。还要将“类型”值更改为唯一的值。这是我所做的。

<LogicalFolder Name="Tables" Type="4" Sorted="true">
  <Items />
</LogicalFolder>
<LogicalFolder Name="Functions" Type="6" Sorted="true">
  <Items />
</LogicalFolder>
<LogicalFolder Name="User-defined Table Types" Type="7" Sorted="true">
  <Items />
</LogicalFolder>

确保保留项目文件(.ssmssqlproj)的副本。如果您像我几次一样弄乱了编辑,则该项目将无法打开。如果您已经安装了TFS加载项并正在签入项目文件,这不会太糟-您可以放弃所做的更改。但是,如果没有,请确保进行复印。

然后,在解决方案下创建文件夹以匹配逻辑文件夹名称。之后,我创建了一个表定义脚本和一个用户定义的表类型定义脚本,并将它们保存在各自的文件夹中。它们显示在解决方案资源管理器中的“其他”文件夹下,因此我将它们拖到相应的文件夹中。

这是发生问题的地方。因为我认为所有存储过程,函数,表和类型都在具有.sql扩展名的文件中。因为是.sql文件,所以它们被放置在解决方案资源管理器中的Queries文件夹下。但是,它们实际上仍然位于磁盘上的正确文件夹中。因此,这是朝正确方向迈出的一步。

我想查看项目文件中的“ Type”属性是否与特定的文件扩展名相对应,以及是否可以确定它们是什么。如果我可以获取正确的扩展名,则SSMS会将文件放置在正确的项目文件夹中。

根据SSMS的启动画面,我可以看一下Visual Studio来了解它是如何工作的,因为SSMS是基于Visual Studio的。

但是,我在那儿,所以也许你们中的一个可以弄清楚其余的!


这对我不起作用。无法打开。
Soham Dasgupta,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.