欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

程序员文章站 2022-06-10 19:08:25
...

ssms脚本生成缓慢

This article explores different ways to generate data scripts using Azure Data Studio and SQL Server Management Studio.

本文探讨了使用Azure Data Studio和SQL Server Management Studio生成数据脚本的不同方法。

介绍 (Introduction)

Each organization follows the standard practice of having multiple environments for a database. Usually, we use Production, UAT, Staging, Development terminology for these environments. We get different kinds of requirements for data to refresh from one environment to another such as follows:

每个组织都遵循为数据库提供多个环境的标准做法。 通常,对于这些环境,我们使用生产,UAT,登台,开发术语。 对于数据从一种环境刷新到另一种环境,我们有不同的要求,如下所示:

  • Refresh a complete production database into a lower environment

    将完整的生产数据库刷新到较低的环境
  • Refresh only specific tables from production to dev, staging environment

    从生产到开发,暂存环境仅刷新特定的表
  • Generate scripts (Insert statements) for table data

    生成表数据的脚本(Insert语句)
  • Generate script for output of a select statement(specific data)

    生成用于选择语句输出的脚本(特定数据)

In the following articles, we explored different ways of scripting objects in SQL Server:

在以下文章中,我们探讨了在SQL Server中编写对象脚本的不同方法:

In this article, we will explore generating scripts using SQL Server Management Studio and Azure Data Studio.

在本文中,我们将探索使用SQL Server Management Studio和Azure Data Studio生成脚本。

SQL Server Management Studio中的“生成脚本”向导 (Generate Scripts wizard in SQL Server Management Studio)

We get the Generate Scripts wizard option in the task menu of a SQL database, as shown below:

我们在SQL数据库的任务菜单中获得了Generate Scripts向导选项,如下所示:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Select the specific table for which we need the script. We can select multiple objects as well for scripting:

选择我们需要脚本的特定表。 我们还可以选择多个对象来编写脚本:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

In the next page, you’ll find scripting options like:

在下一页中,您将找到以下脚本选项:

  1. Save to file

    保存到文件
  2. Save to Clipboard

    保存到剪贴板
  3. Save to a new query window

    保存到新的查询窗口

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on Advanced (4) and view advanced scripting options:

单击高级 (4)并查看高级脚本选项:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

I require to generate scripts for data only. We do not want object scripts in the generated script. For this requirement, make the following changes in the advanced scripting options:

我需要只为数据生成脚本。 我们不希望在生成的脚本中使用对象脚本。 为此,请在高级脚本选项中进行以下更改:

  • Script defaults: False

    脚本默认值:False
  • Script extended properties: False

    脚本扩展属性:False
  • Type of data to script: Data only

    要编写脚本的数据类型:仅数据
  • Script check constraints: False

    脚本检查约束:False
  • Script foreign keys: False

    脚本外键:False
  • Script primary keys: False

    脚本主键:False
  • Script Unique keys: False

    脚本唯一键:False

Click OK and generate script in the new query window. Once all tasks completed in the wizard, you can see the success status of each one:

单击确定,然后在新的查询窗口中生成脚本。 在向导中完成所有任务后,您可以看到每个任务的成功状态:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

It generates the Insert statement for all data rows. In the following image, we see a glimpse of insert statements:

它为所有数据行生成Insert语句。 在下图中,我们可以看到插入语句:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

We can use this insert statement for data insertion in other environments. It solves the requirement if we want a script for all data rows.

我们可以使用此插入语句在其他环境中进行数据插入。 如果我们想要一个用于所有数据行的脚本,它将满足要求。

We cannot filter the rows in the Generate Script wizard of SSMS. Let’s explore the solution using Azure Data Studio.

我们无法在SSMS的“生成脚本”向导中过滤行。 让我们使用Azure Data Studio探索解决方案。

Azure Data Studio(ADS)中的简单数据脚本编写器 (Simple Data Scripter in Azure Data Studio (ADS))

In the previous articles, we have explored various solutions in the ADS extensions. An extension is ADS ability for feature enhancements. It also allows you to design your extension and publish it on the market place for other users.

在前面的文章中,我们探讨了ADS扩展中的各种解决方案。 扩展功能是ADS功能增强。 它还允许您设计扩展并将其发布给其他用户。

We should always use the latest version of ADS. In this article, I use November release version 1.13.1:

我们应该始终使用最新版本的ADS。 在本文中,我使用11月发行版1.13.1:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Launch Azure Data Studio and navigate to Extensions in the left-hand menu bar. We get a list of extensions so you can search for specific extension using keywords. For example, here we see a Simple Data Scripter extension:

启动Azure Data Studio并导航到左侧菜单栏中的扩展 。 我们获得了扩展名列表,因此您可以使用关键字搜索特定的扩展名。 例如,在这里我们看到一个简单的数据脚本扩展程序:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on Install, and it asks permissions for opening an external website:

单击“ 安装” ,它会要求您打开外部网站的权限:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on Open and in the GitHub page, and you see a file simple-data-scripter-0.1.0.vsix as shown below:

单击“ 打开”,然后在GitHub页面上,您会看到一个文件simple-data-scripter-0.1.0.vsix ,如下所示:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Download this VSIX file and save it on the appropriate location. In the Azure Data Studio, go to File, and select Install Extension from VSIX Package:

下载此VSIX文件并将其保存在适当的位置。 在Azure Data Studio中,转到“ 文件” ,然后选择“ 从VSIX包安装扩展”

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Select previously downloaded VSIX file and install it:

选择先前下载的VSIX文件并安装它:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

You get a prompt for accepting the security risk because it is a third party extension:

由于它是第三方扩展,因此会提示您接受安全风险:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click Yes, and it quickly installs this data scripter extension:

单击 ,它会快速安装此数据脚本扩展程序:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

You have to reload Azure Data Studio to activate the extension:

您必须重新加载Azure Data Studio才能**扩展:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on Reload Now, and it restarts ADS. You should save any work before reloading ADS.

单击立即重新加载 ,它将重新启动ADS。 重新加载ADS之前,您应该保存所有工作。

使用数据脚本扩展生成脚本 (Generate scripts using the Data Script extension )

Connect to a SQL instance in Azure Data Studio, and you get an option Script Table Data in the right-click context menu:

连接到Azure Data Studio中SQL实例,您会在右键单击上下文菜单中获得“ 脚本表数据 ”选项

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

It opens the following window with a query to select all records from the selected table. In this example, we require a script for [dbo].[Employee] table, so it shows the following script:

它打开下面的查询窗口,以从所选表中选择所有记录。 在此示例中,我们需要用于[dbo]。[Employee]表的脚本,因此它显示以下脚本:

SELECT *
FROM [SQLShack].[dbo].[Employee];

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

We can use the following options for this pop-up:

我们可以在弹出窗口中使用以下选项:

  • Enter:- Press [Enter] to execute the script and get a script

    输入:-按[Enter]执行脚本并获取脚本
  • Escape:- Press [ESC] for cancelling query execution

    转义 :-按[ESC]取消查询执行

Let’s accept the default query and press Enter to view the script. In the tasks, it shows the status of scripting data for a specific object. We can also note that it took 0 seconds for generating the script:

让我们接受默认查询,然后按Enter键查看脚本。 在任务中,它显示特定对象的脚本数据状态。 我们还可以注意到生成脚本花费了0秒:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

We get the script in the following screenshot. This script is in two parts.

我们在以下屏幕截图中获得了脚本。 该脚本分为两部分。

  1. Create table statement: It scripts all output columns with appropriate data types in a temporary table. By default, it comments the create table statement

    Create table语句:在临时表中用适当的数据类型编写所有输出列的脚本。 默认情况下,它注释创建表语句
  2. Insert statement: it generates an insert statement with all values from the source table

    插入语句:它会生成一条插入语句,其中包含源表中的所有值

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

We can modify the temporary table with an appropriate table name, uncomment the create table statement:

我们可以使用适当的表名称修改临时表,而无需注释create table语句:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Now, click on Connect and specify an existing connection. You can also specify a new connection in case you want to execute this script on a separate instance:

现在,单击“ 连接”并指定一个现有连接。 如果要在单独的实例上执行此脚本,也可以指定一个新连接:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Once connected, select the destination database from the drop-down list:

连接后,从下拉列表中选择目标数据库:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on Run to execute this script. In the output, we see that six rows inserted successfully:

单击运行以执行此脚本。 在输出中,我们看到成功插入了六行:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Verify the records from the table using the SELECT statement:

使用SELECT语句验证表中的记录:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

使用Azure Data Studio为选定的记录生成脚本 (Generate script for selected records using Azure Data Studio)

It is an exciting part of the data scripter extension. Suppose we have two copies of a database – Production and Test.

这是数据脚本编写器扩展中令人兴奋的一部分。 假设我们有两个数据库副本-生产和测试。

We find out that in the Production database we have records for employee id 1 to 6 while the test database has employee records up to employee id 4. In this case, we want to generate a script for employee id 5 and 6 so that we can insert it into the test database.

我们发现,在生产数据库中,我们有员工ID为1到6的记录,而测试数据库中有员工ID为4的员工记录。在这种情况下,我们要为员工ID 5和6生成脚本,以便我们可以将其插入测试数据库。

Right-click on the table and click Script table data. You get the following pop-up as described earlier as well:

右键点击表格,然后点击脚本表格数据 。 您还将获得如前所述的以下弹出窗口:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Click on the query and modify it to select records with employee id greater than 4 as shown below:

单击查询并对其进行修改以选择雇员ID大于4的记录,如下所示:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Press Enter and review the generated script. In the script, notice that it includes records for Employee id five and six:

Enter键并查看生成的脚本。 在脚本中,请注意,它包含员工ID 5和6的记录:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

使用Azure Data Studio为目标表中的几列生成脚本 (Generate script for few columns into destination table using Azure Data Studio)

In the previous example, we generated a script for all columns of a source table and prepared a destination table. Suppose we want a few specific columns in the destination table. We can specify column names using the Data Script extension.

在前面的示例中,我们为源表的所有列生成了一个脚本,并准备了目标表。 假设我们要在目标表中添加一些特定的列。 我们可以使用数据脚本扩展名指定列名。

It is better to write the query using specific columns so that we can copy this script in the data script window:

最好使用特定列编写查询,以便我们可以在数据脚本窗口中复制此脚本:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Specify this query into the data scripter window:

在数据脚本窗口中指定此查询:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Press Enter and you get a script with only specified columns:

Enter键 ,您将获得仅包含指定列的脚本:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Generate script from the output of a view that joins multiple tables using Azure Data Studio.

使用Azure Data Studio从连接多个表的视图输出生成脚本。

We do not have options to generate a script for the query that joins multiple tables. If we right-click on a view, we do not get the option to generate the script for it:

我们没有用于为连接多个表的查询生成脚本的选项。 如果右键单击一个视图,则无法获得为其生成脚本的选项:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

We can still generate insert statement scripts with a small twist. Right-click on any table in the database and click Script table data.

我们仍然可以稍作改动就生成插入语句脚本。 右键单击数据库中的任何表,然后单击“ 脚本表数据”。

In the query window, write-down script to select records from a view. This view in the sample database AdventureWorks joins multiple tables together. You can right-click on this view and script as create to view the schema of it:

在查询窗口中,写下脚本以从视图中选择记录。 示例数据库AdventureWorks中的此视图将多个表连接在一起。 您可以右键单击此视图和创建脚本,以查看其架构:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

Press Enter and see our trick works! We get the view output table script and data insertion script as well:

Enter键 ,即可看到我们的技巧! 我们还获得了视图输出表脚本和数据插入脚本:

ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本

结论 (Conclusion)

In this article, we explored the data scripter extension in Azure Data Studio. We can generate scripts for objects and data insertion as well as using this. I found it a useful extension, and you should explore it using the examples specified above.

在本文中,我们探讨了Azure Data Studio中的数据脚本编写器扩展。 我们可以使用以及生成用于对象和数据插入的脚本。 我发现它是一个有用的扩展,您应该使用上面指定的示例进行探索。

翻译自: https://www.sqlshack.com/generate-data-scripts-using-ssms-and-azure-data-studio/

ssms脚本生成缓慢