Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs 如何在SQLServerManagementStudio中使用源代码管理? 如何使用SQL Server Studio? < P>使用源代码管理,这使得Team Foundation版本控制与不支持团队资源管理器集成的产品集成使用。 < P>这取决于您使用的SSM版本。_Tfs_Ssms - Fatal编程技术网

Tfs 如何在SQLServerManagementStudio中使用源代码管理? 如何使用SQL Server Studio? < P>使用源代码管理,这使得Team Foundation版本控制与不支持团队资源管理器集成的产品集成使用。 < P>这取决于您使用的SSM版本。

Tfs 如何在SQLServerManagementStudio中使用源代码管理? 如何使用SQL Server Studio? < P>使用源代码管理,这使得Team Foundation版本控制与不支持团队资源管理器集成的产品集成使用。 < P>这取决于您使用的SSM版本。,tfs,ssms,Tfs,Ssms,如果您使用的是使用VisualStudioShell的版本,那么它已经集成到SSMS中,您所需要做的就是启用它。SQLServer团队的博客文章解释了如何使用 如果您使用的是以前的版本,则必须下载并安装提供商。提供完整详细信息。在SSMS中启用源代码管理集成要在SSMS中启用TFS集成,请执行以下步骤: 1) 如果SSMS正在运行,请关闭它 2) 在SSMS计算机上安装Visual Studio 2015。如果您还没有VisualStudio,CommunityEdition可以正常工作。这是一

如果您使用的是使用VisualStudioShell的版本,那么它已经集成到SSMS中,您所需要做的就是启用它。SQLServer团队的博客文章解释了如何使用


如果您使用的是以前的版本,则必须下载并安装提供商。提供完整详细信息。

在SSMS中启用源代码管理集成要在SSMS中启用TFS集成,请执行以下步骤:

1) 如果SSMS正在运行,请关闭它

2) 在SSMS计算机上安装Visual Studio 2015。如果您还没有VisualStudio,CommunityEdition可以正常工作。这是一个很大的下载量,但如果您的唯一目的是在SSMS中启用源代码管理,则可以通过在Visual Studio安装期间取消选择所有语言来节省一些空间

3) 编辑位于C:\Program Files(x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\ssms.pkgundef的ssms.pkgundef文件

在该文件的顶部,有一系列与TFS源代码管理功能相关的软件包。必须从pkgundef文件中删除这些包。这可以通过删除节或使用“/”注释掉每行来完成。下面是一个示例,说明如果注释掉了://TFS SCC配置条目,该节应该是什么样子。TFS条目阻止团队资源管理器加载

// Microsoft.VisualStudio.TeamFoundation.Lab
//[$RootKey$\Packages\{17c5d08a-602c-4dfb-82b5-8e0f7f50c9d7}]
// GitHub Package
//[$RootKey$\Packages\{c3d3dc68-c977-411f-b3e8-03b0dccf7dfc}]
// Team Foundation Server Provider Package
//[$RootKey$\Packages\{5BF14E63-E267-4787-B20B-B814FD043B38}]
// Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.WitPcwPackage
//[$RootKey$\Packages\{6238f138-0c0c-49ec-b24b-215ee59d84f0}]
// Microsoft.VisualStudio.TeamFoundation.Build.BuildPackage
//[$RootKey$\Packages\{739f34b3-9ba6-4356-9178-ac3ea81bdf47}]
// Microsoft.VisualStudio.TeamFoundation.WorkItemTracking
//[$RootKey$\Packages\{ca39e596-31ed-4b34-aa36-5f0240457a7e}]
// Microsoft.VisualStudio.TeamFoundation
//[$RootKey$\Packages\{b80b010d-188c-4b19-b483-6c20d52071ae}]
// Microsoft.TeamFoundation.Git.Provider.SccProviderPackage
//[$RootKey$\Packages\{7fe30a77-37f9-4cf2-83dd-96b207028e1b}]
// Microsoft.VisualStudio.TeamFoundation.VersionControl.SccPcwPluginPackage
//[$RootKey$\Packages\{1b4f495a-280a-3ba4-8db0-9c9b735e98ce}]
// Microsoft.VisualStudio.TeamFoundation.VersionControl.HatPackage
//[$RootKey$\Packages\{4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}]
// Visual SourceSafe Provider Package
//[$RootKey$\Packages\{AA8EB8CD-7A51-11D0-92C3-00A0C9138C45}]
// Visual SourceSafe Provider Stub Package
  [$RootKey$\Packages\{53544C4D-B03D-4209-A7D0-D9DD13A4019B}]
// Microsoft.VisualStudio.TeamFoundation.Initialization.InitializationPackage
  [$RootKey$\Packages\{75DF55D4-EC28-47FC-88AC-BE56203C9012}]
// Team Foundation Server Provider Stub Package
  [$RootKey$\Packages\{D79B7E0A-F994-4D4D-8FAE-CAE147279E21}]
// Microsoft.VisualStudio.Services.SccDisplayInformationPackage
  [$RootKey$\Packages\{D7BB9305-5804-4F92-9CFE-119F4CB0563B}]
// Microsoft.VisualStudio.TeamFoundation.Lab.LabPcwPluginPackage
   [$RootKey$\Packages\{e0910062-da1f-411c-b152-a3fc6392ee1f}]
   [$RootKey$\ToolsOptionsPages\Source Control]
   [$RootKey$\AutoLoadPackages\{11b8e6d7-c08b-4385-b321-321078cdd1f8}]
// TFS SCC Configuration entries.

完成后,启动SSMS,SSMS菜单栏中应显示“团队”菜单。此菜单和相关功能是Visual Studio的标准功能。这允许连接到TFS服务器或Git服务器。

可以使用各种第三方加载项直接从SSM完成SQL数据库版本控制。例如,ApexSQL源代码管理具有无缝的SSMS集成,它不仅可以与TFS一起使用,而且还支持以下SC系统:Git、Subversion、Mercurial和Perforce。Team Foundation Server支持包括一个在线版本VisualStudioTeam Services:


如中所述,ApexSQL源代码管理外接程序引入了一个称为“操作中心”选项卡的IDE,允许您维护源代码管理存储库,而无需首先编写数据库对象的脚本。通常,将数据库链接到源代码管理存储库后,“操作中心”选项卡将自动打开,但您仍然可以通过键盘组合键Ctrl+Alt+a或右键单击源代码管理链接的数据库并导航到“操作中心”选项手动打开它。

我的解决方案仅适用于版本历史。我有一个计划的powershell脚本,用于生成指定对象(存储的过程、函数、表和视图)的定义。然后,它使用git更新GitLab存储库。Git只会在文件内容发生更改时更新,所以每次生成所有脚本都可以

function SQL-Script-Database
{
    <#
    .SYNOPSIS
    Script all database objects for the given database.

    .DESCRIPTION
    This  function scripts all database objects  (i.e.: tables,  views, stored
    procedures,  and user defined functions) for the specified database on the
    the given server. It creates a subdirectory per object type under 
    the path specified.

    .PARAMETER savePath
    The root path where to save object definitions.

    .PARAMETER database
    The database to script (default = $global:DatabaseName)

    .PARAMETER DatabaseServer 
    The database server to be used (default: $global:DatabaseServer).

    #>

    param (
        [parameter(Mandatory = $true)][string] $savePath,
        [parameter(Mandatory = $false)][string] $database = $global:DatabaseName,
        [parameter(Mandatory = $false)][string] $DatabaseServer = $global:DatabaseServer
    )

    try
    {
        if (!$DatabaseServer)
            { throw "`$DatabaseServer or `$InstanceName variable is not properly initialized" }

        [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null

        $s = New-Object Microsoft.SqlServer.Management.Smo.Server($DatabaseServer)
        $db = $s.databases[$database]

        $objects = $db.Tables
        $objects += $db.Views
        $objects += $db.StoredProcedures
        $objects += $db.UserDefinedFunctions

        $scripter = New-Object ('Microsoft.SqlServer.Management.Smo.Scripter') ($s)

        $scripter.Options.AnsiFile = $true
        $scripter.Options.IncludeHeaders = $false
        $scripter.Options.ScriptOwner = $false
        $scripter.Options.AppendToFile = $false
        $scripter.Options.AllowSystemobjects = $false
        $scripter.Options.ScriptDrops = $false
        $scripter.Options.WithDependencies = $false
        $scripter.Options.SchemaQualify = $false
        $scripter.Options.SchemaQualifyForeignKeysReferences = $false
        $scripter.Options.ScriptBatchTerminator = $false

        $scripter.Options.Indexes = $true
        $scripter.Options.ClusteredIndexes = $true
        $scripter.Options.NonClusteredIndexes = $true
        $scripter.Options.NoCollation = $true

        $scripter.Options.DriAll = $true
        $scripter.Options.DriIncludeSystemNames = $false

        $scripter.Options.ToFileOnly = $true
        $scripter.Options.Permissions = $true

        foreach ($o in $objects | where {!($_.IsSystemObject)}) 
        {
            $typeFolder=$o.GetType().Name 

            if (!(Test-Path -Path "$savepath\$typeFolder")) 
                { New-Item -Type Directory -name "$typeFolder"-path "$savePath" | Out-Null }

            $file = $o -replace "\[|\]"
            $file = $file.Replace("dbo.", "")

            $scripter.Options.FileName = "$savePath\$typeFolder\$file.sql"
            $scripter.Script($o)
        }
    }

    catch
    {
        Write-Error "`t`t$($MyInvocation.InvocationName): $_"
    }
}

# repeat line for each database/server to be pushed to version control 
SQL-Script-Database C:\Users\UserName\DbObjDef\FolderName DatabaseName ServerName

cd C:\Users\UserName\DbObjDef
git add .
git commit -m "nightly diff" 
git push -u origin master
函数SQL脚本数据库 { param( [参数(必需=$true)][字符串]$savePath, [参数(必需=$false)][string]$database=$global:DatabaseName, [参数(必需=$false)][string]$DatabaseServer=$global:DatabaseServer ) 尝试 { 如果(!$DatabaseServer) {抛出“`$DatabaseServer或`$InstanceName变量未正确初始化”} [System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SMO”)| Out Null $s=新对象Microsoft.SqlServer.Management.Smo.Server($DatabaseServer) $db=$s.databases[$database] $objects=$db.Tables $objects+=$db.Views $objects+=$db.StoredProcedures $objects+=$db.UserDefinedFunctions $scripter=新对象($s) $scripter.Options.AnsiFile=$true $scripter.Options.IncludeHeaders=$false $scripter.Options.ScriptOwner=$false $scripter.Options.AppendToFile=$false $scripter.Options.AllowSystemobjects=$false $scripter.Options.ScriptDrops=$false $scripter.Options.WithDependencies=$false $scripter.Options.SchemaQualify=$false $scripter.Options.SchemaQualifyForeignKeysReferences=$false $scripter.Options.ScriptBatchTerminator=$false $scripter.Options.index=$true $scripter.Options.ClusteredIndex=$true $scripter.Options.NonClusteredIndexes=$true $scripter.Options.NoCollation=$true $scripter.Options.DriAll=$true $scripter.Options.DriIncludeSystemNames=$false $scripter.Options.ToFileOnly=$true $scripter.Options.Permissions=$true foreach($objects中的o |其中{!($.IsSystemObject)}) { $typeFolder=$o.GetType().Name if(!(测试路径-路径“$savepath\$typeFolder”)) {新项-类型目录-名称“$typeFolder”-路径“$savePath”| Out Null} $file=$o-替换“\[\\]” $file=$file.Replace(“dbo.”,“”) $scripter.Options.FileName=“$savePath\$typeFolder\$file.sql” $scripter.Script($o) } } 抓住 { 写入错误“`t`t$($MyInvocation.InvocationName):$\ } } #对要推送到版本控制的每个数据库/服务器重复第行 SQL脚本数据库C:\Users\UserName\DbObjDef\FolderName数据库名称ServerName cd C:\Users\UserName\DbObjDef git添加。 git提交-m“夜间差异” git-push-u源主机
什么版本的SSMS和什么版本的TFS?你所说的“这将是自我回答”是什么意思。如果是这样,为什么还要问这个问题?因为这个问题没有现成的答案。蓝色