SQLServer安全性阶梯2的阶梯:身份验证

SQLServer安全性阶梯2的阶梯:身份验证

作者: Don Kiely, 2014/06/18

这篇文章是阶梯系列的一部分: SQL Server安全性的阶梯

SQL Server拥有您需要的一切来保护您的服务器和数据,以抵御当今复杂的攻击。但是在您能够有效地使用这些安全特性之前,您需要了解您所面临的威胁和一些基本的安全概念。这个第一个阶梯级别提供了一个基础,这样您就可以充分利用SQL Server中的安全特性,而不必浪费时间在那些不能保护您的数据的特定威胁的特性上。

身份验证是验证一个委托者,一个用户或进程需要访问SQL Server数据库的过程,是谁或它声称是什么。一个主体需要唯一的标识,以便SQLServer能够确定主体拥有的权限,如果有的话。正确的身份验证是提供对数据库对象的安全访问的第一步。

SQL Server支持两种身份验证路径:Windows集成的身份验证和SQL Server身份验证。您使用的路径依赖于网络环境、访问数据库的应用程序类型以及这些应用程序的用户类型。

 

 

l   Windows身份验证:当用户登录到Windows时,这种身份验证形式依赖于Windows来执行重启动验证标识。访问SQL Server对象的权限被分配给Windows登录。只有在支持Windows NTKerberos身份验证的Windows版本上运行SQL Server时,这种类型的身份验证才可用。这种身份验证自Windows 2000以来已基本成为标准。

l   SQL Server身份验证:SQL Server完全可以自己处理身份验证。在这种情况下,您可以创建独特的用户名——SQL server和密码中称为登录。用户或应用程序连接到SQL Server并提供这些凭据以供访问。然后将权限分配给该登录,或者直接或通过成员身份登录。

 

 

SQL Server中配置身份验证并不是这两种类型之间的简单选择。您可以通过两种方式配置身份验证。

 

 

l   混合模式验证:服务器支持SQL serverWindows身份验证。

l    Windows只有模式:服务器只支持Windows身份验证。

 

 

微软强烈建议尽可能使用Windows认证。Windows具有强大的身份验证选项,包括密码策略,但Windows身份验证在实际应用程序中并不总是实用的。SQL Server身份验证可以连接到一些Windows身份验证功能,但它并不安全。

 

 

 Windows身份验证

 

 

如果您将SQL服务器配置为在Windows身份验证模式下运行,那么SQL Server将假定与Windows服务器的信任关系。它假设Windows在登录到Windows时验证了用户的身份。然后,SQL Server检查用户帐户、任何Windows组和任何SQL Server角色,用户可能是决定该用户是否被允许使用各种SQL Server对象的成员。

 

 

SQL Server身份验证相比,Windows身份验证具有几个优势,包括:

l   由用户单独登录,这样她就不必单独登录到SQL Server

l   审计功能

l   简化登录管理

l   密码策略(Windows Server 2003及以后)  

 

Windows身份验证的另一大优点是,对Windows用户和组的任何更改都会自动反映在SQL Server中,因此您不必单独管理它们。但是,如果您在Windows用户连接到SQL Server时对其进行更改,那么这些更改直到用户下一次连接到SQL Server时才会生效。

 

 

配置SQL Server安全设置

 

 

安装SQL Server时,可以选择服务器实例允许的身份验证模式。稍后,您可以在SQLServer Management Studio中更改服务器属性对话框中的设置。这些设置适用于SQLServer实例中的所有数据库和其他对象。因此,如果需要为任何数据库使用SQL Server身份验证,则必须为服务器设置混合模式。

 

 

2.1显示了管理Studio中选择的Security页面的服务器属性对话框。要打开这个对话框,右键单击对象资源管理器中的服务器实例名,并从弹出菜单中选择Properties,然后进入安全页面。只需单击适当的单选按钮并单击OK提交更改,就可以更改身份验证模式。

 2.1。为SQL服务器实例配置身份验证模式。

 

添加一个Windows登录

 

要使用Windows身份验证,用户在访问SQL Server之前需要一个有效的Windows登录帐户。然后,您可以将权限授予Windows组,以连接到SQL Server,如果您不想授予集体权限,则可以向单个Windows用户授予权限。

 

使用管理Studio来管理安全性的优点之一是,您可以同时设置登录和提供数据库访问。要启用Windows登录访问SQL ServerAdventureWorks2012数据库,请使用以下步骤,该步骤假定本地机器已经定义了JoeStairway登录。

 

 

1.打开SQL Server管理Studio,确保对象资源管理器窗口可见,并连接到一个SQL服务器实例。

2.展开服务器对象的树视图,然后展开安全性部分。您将看到几个子节点,如图2.2所示。

2.2。服务器对象资源管理器的安全部分,您​​可以在其中定义登录名。

 

3.右键单击Logins节点并从弹出菜单中选择New Login以打开Login - New对话框。

4.确保选中了Windows身份验证单选按钮。

5.您可以通过两种方式选择Windows登录。第一种方法是直接输入域或机器名,然后是反斜杠和用户的Windows登录名。第二种方法,通常更简单的方法是单击Search按钮打开选择用户对话框。键入用户名并单击Check name按钮以查找准确的名称。如果找到该用户,将会出现完整的名称,如图2.3所示。单击OK选择该用户。

2.3。查找Windows登录名以添加到SQLServer。


6.回到Login - New对话框,将AdventureWorks2012数据库设置为登录的默认数据库。这是当用户连接到服务器并且没有指定数据库时使用的数据库。它不限制用户只访问该数据库。图2.4显示了在名为Marathon的机器上的Windows JoeStairway用户的结果登录,并将默认数据库设置为示例的AdventureWorks2012数据库。

 

2.4。登录 - 新建对话框使Windows登录可以访问SQL Server实例。

 

提示:

永远不要将默认数据库设置为主数据库。我从痛苦的经验中总结:连接到服务器和忘记更改数据库太容易了。如果您运行一个在主数据库中创建数百个数据库对象的脚本,那么您将会有一个非常繁琐的工作:手动删除这些对象,以清理主数据库。

1. 1.接下来,让用户访问数据库。从对话框左侧的列表中选择UserMapping页面。通过检查数据库名称旁边的复选框,授予用户访问AdventureWorks2012数据库的权限。SQL Server自动将用户映射到数据库中具有相同名称的用户,正如您可以在表的第三列中看到的那样,即使你可以更改用户名。在数据库中指定Sales作为用户的默认模式,或者通过在默认的模式列中键入它,或者单击省略号(…)按钮从列表中选择它。对话框应该如图2.5所示。图2.5。授予对AdventureWorks2012数据库的Windows登录访问权限。

2. 

3. 提示:

4. 设置一个登录和授予访问数据库的默认数据库之间是有区别的。默认数据库仅仅意味着SQL Server尝试在用户登录而不指定数据库时将上下文更改为该数据库。但这并没有授予任何权限来在数据库中执行任何操作,甚至不允许访问数据库。这意味着可以为用户分配一个无法访问的默认数据库。对于用户在访问数据库时做任何有用的事情,您需要授予用户权限。

5. 8.默认情况下,新的Windows登录可以访问服务器。但是,如果您想要拒绝对方服务器的登录访问,请从login - New对话框左侧的页面列表中选择Status,并选择deny单选按钮。您还可以通过选择禁用按钮来临时禁用登录。图2.6显示了这些选项。

 

2.6。允许或拒绝访问服务器并暂时禁用登录帐户的选项。

 

9.单击OK以创建用户。

 

您还可以以同样的方式向SQL Server添加一个Windows组。在这种情况下,组中的任何成员都可以访问数据库服务器,无论您将该组提供给数据库中的对象。

 

SQL Server身份验证

 

当您使用SQL Server登录进行身份验证时,客户机应用程序必须提供有效的用户名和密码才能连接到数据库。这些SQL Server登录在SQL Server中保存,而不涉及Windows。当登录时,如果没有帐户匹配用户名和密码,SQL Server会引发错误,用户无法访问SQL Server

 

即使Windows身份验证更加安全,您也可以选择在某些情况下使用SQL Server登录。对于没有广泛安全需求的简单应用程序,SQL Server身份验证更容易管理,而且它允许您避免与Windows安全性纠缠在一起。如果客户端运行的是旧版本的Windows(基本上,任何比Windows 2000更老的版本)或非Windows操作系统,就必须使用SQLServer登录。

 

要创建一个SQL Server登录,请使用与Windows登录相同的登录新对话框。但是,不要选择Windows登录,输入一个没有域或机器名的唯一登录名,并提供一个密码。例如,图2.7显示了如何创建一个新的SQL Server登录Casper,并将AdventureWorks2012作为默认数据库。

Figure 2.7. Creating a SQL Server login.

All of the other options for user mapping and status are the same SQL Server logins as they are for Windows logins.

SQL Server Logins via Transact-SQL

2.7。创建一个SQLServer登录。

 

用户映射和状态的所有其他选项与SQL登录名相同,都与Windows登录名相同。

 

SQL Server通过Transact-SQL进行登录

您还可以使用Transact-SQL代码执行相同的操作。CREATE LOGIN2.1中的代码创建了一个具有相当强密码的SQL Server登录Topaz

CREATE LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v';

GO

2.1。使用T-SQL创建新SQL Server登录的代码。

 

然后,要授予TopazAdventureWorks2012数据库的访问权限,请使用该CREATE USER语句并分配一个默认模式,如例2.2所示。 

USE AdventureWorks2012;

GO

 

CREATE USER Topaz FOR LOGIN Topaz

    WITH DEFAULT_SCHEMA = HumanResources;

GO

2.2。用于创建与SQLServer登录关联的数据库用户的代码。

 

提示:

1级阶梯一样,如果您想在本地SQL Server实例中运行它们,您可能需要对代码示例进行一些更改。例2.2中的代码假定您已安装AdventureWorks2012数据库。稍后的代码示例假设您正在名为Marathon的计算机上运行代码,并且在Windows中有JoeStairway用户。您可以随意为您的机器Marathon命名或创建一个具有该名称的用户,或者根据需要更改代码。

 

Windows登录一样,您可以将服务器登录Topaz映射到数据库中的其他名称。例2.3中的代码将Topaz映射到AdventureWorks2012数据库中的TopazD用户: 

DROP USER Topaz;

GO

CREATE USER TopazD FOR LOGIN Topaz WITH DEFAULT_SCHEMA = HumanResources;

GO

2.3。删除现有用户的代码然后添加名称不同于登录名的数据库用户。

 

注意sa登录

如果您将SQL Server配置为支持SQL Server登录,则需要注意一个内置SQL Server登录 - sa登录 - 您可能已经注意到它在对象资源管理器的登录节点中闲逛。该SA,或系统管理员,登录包括主要用于与旧版本的SQL Server的向后兼容性。该SA登录映射到系统管理员固定服务器角色,任何谁到SQL Server登录作为SA是一个完整的系统管理员,以在整个SQL Server实例不可撤销的权利和它所有的数据库。确实,这是一个强大的登录。

 

您不能修改或删除sa登录。如果您在安装SQL Server时选择混合模式身份验证,系统会提示您输入sa用户的密码。如果没有密码,任何人都可以使用无密码登录,然后播放让我们管理服务器。不用说,这是您希望用户做的最后一件事。如果其他系统管理员不可用或忘记了他们的Windows密码,请使用sa登录名仅将其作为后门进行登录。如果发生这种情况,您可能需要新的管理员!

 

从不EVER,使用sa登录访问应用程序中的数据库。如果黑客能够控制应用程序,那么这样做可能会给黑客管理员级的数据库服务器控制权。在过去,这是一种攻击服务器的简单方法,是一种可怕的做法。相反,请为应用程序设置自定义的WindowsSQL Server登录名,并为该登录名提供运行应用程序所需的绝对最低权限(实现最小权限原则)。

 

提示:

事实上,您应该考虑完全禁用sa登录,使用前面看到的登录属性对话框的状态页面。这样,攻击者无法使用这个全功能登录来获得对服务器实例的控制权,无论您是否拥有强大的sa密码。

 

密码策略和执行

2005年以前的SQLServer版本中,系统管理员没有简单的方法来执行可能有助于使系统更安全的密码策略。例如,SQL Server无法强制用户创建最小长度的强密码以及字母数字和其他字符的混合。如果有人想使用单个字母作为密码创建登录,则无法将SQL Server配置为阻止它。同样,没有办法导致密码定期到期,例如每三个月。有些人正确地认为这是不使用SQL Server登录的主要原因。

 

更新版本的SQL Server可以挂接到Windows Server 2003Windows Vista或更高版本的密码策略中。密码仍存储在SQL Server中,但SQL Server调用了Windows Server 2003中首次引入的NetValidatePasswordPolicy()Windows API方法。该API函数将Windows密码策略应用于SQL Server登录,并返回一个值指示密码是否有效。SQL Server在用户创建,设置或重置密码时调用此函数。

 

您可以通过Windows控制面板的管理工具中的本地安全设置小程序来定义Windows密码策略。密码策略部分如图2.8所示,默认设置。该小程序有一个单独的账户锁定策略部分,如图2.9所示,当用户进行太多不成功的登录尝试时,该部分生效。默认情况下,在全新Windows安装中禁用锁定策略。 

 

2.8Windows本地安全策略小程序显示默认的密码策略。

 

 2.9Windows本地安全策略小程序,显示默认帐户锁定策略。

2.1列出了密码策略以及默认值和一些关于它们如何工作的说明。

 

2.1Windows密码策略设置。

 

您可以在创建登录时启用或禁用密码策略实施。登录 - 新建对话框在创建登录名时启用了一个部分,如图2-10所示。

Category

Policy Name

Default

Notes

Password Policy

Enforce password history

0 passwords remembered

Prevents users from reusing old passwords, such as alternating between two passwords.

Minimum password length

0 characters

Use this to require longer passwords to make them harder to break.

Password must meet complexity requirements

Disabled

Minimum mix of alphanumeric and other characters, and does not contain the user name.

Password Expiration

Maximum password age

42 days

Number of days before a user is prompted to change their password.

Minimum password age

0 Days

Number of days before a user is allowed to change a password.

Account Lockout Policy

Account lockout duration

Not applicable

Time in minutes that the account is locked out if the lockout threshold is enabled.

Account lockout threshold

0 invalid login attempts

Maximum number of unsuccessful login attempts before the account is locked out.

Reset account lockout counter after

Not applicable

Time in minutes after which the counter of unsuccessful attempts is reset; enabled when the lockout threshold is enabled.

2-10。为新登录实施密码策略。

 

当您使用Transact-SQL创建登录时,密码策略也适用。例如,如果您在Windows 2003 Server或更高版本上运行SQL Server并启用了密码策略,则例2.4中的代码将失败。

 

2-10。为新登录实施密码策略。

 

当您使用Transact-SQL创建登录时,密码策略也适用。例如,如果您在Windows 2003 Server或更高版本上运行SQL Server并启用了密码策略,则例2.4中的代码将失败。

 

USE master;

GO

CREATE LOGIN SIMPLEPWD WITH PASSWORD = 'SIMPLEPWD';

GO

2.4。尝试使用违反密码策略的密码创建登录名。

 

此代码失败的原因是密码不能与用户名相同。

 

您可以在创建或更改登录时控制策略。例2.5中的代码关闭了检查过期和策略的选项。

ALTER LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v',

    CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;

2.5。仅更改登录以禁用此登录密码策略的代码。

 

CHECK_EXPIRATION选项控制SQL Server是否根据策略检查密码的年龄并CHECK_POLICY应用于其他策略。有一个MUST_CHANGE选项可以强制用户在下次登录时更改密码。

 

如果用户尝试登录失败的次数太多,超出帐户锁定策略中设置的次数,管理员可以使用该UNLOCK选项重置帐户,如例2.6所示。 

ALTER LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v' UNLOCK

2.6。代码解锁由于失败的登录尝试失败而被锁定的登录名。

 

Windows Server 2003之前的Windows版本上运行SQL Server时,您可以启用强制密码策略。但是,SQL Server使用最小长度为六个字符的默认设置,检查密码与全部或部分登录名称不匹配,并且是大写字母,小写字母,数字和其他字符的混合。您无法更改这些默认设置。但是,希望你没有在这样一个旧版本的Windows上运行SQL Server,如果仅仅是因为从那时起就有了巨大的安全性改进!

 

概要

SQL Server安全性的这一级别中,您已经了解了SQL Server中可用的许多身份验证选项。Windows集成身份验证是最安全的,但并不总是可行,并且多年来Microsoft已经使SQL Server身份验证更好更安全。但是,如果您使用混合模式身份验证,请不要忘记为sa登录提供一个非常强大的密码,或者甚至更好地禁用它!像大多数安全对象一样,您可以使用ManagementStudio中的良好GUI界面或T-SQL代码创建和更改它们。如果您在现代版本的Windows上运行SQL Server,则可以挂接本地安全策略的密码策略。

 

 

本文是 SQL Server安全性阶梯的一部分。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLServer安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据库引擎 SQL Server Analysis Services SQL Server Reporting Services SQL Server Integration Services SQL Server 代理 SQL Full-text Filter Daemon launcher SQL Server Browser 同时开启所有服务系统性能会变得很差,根据需要手动启动或者禁用某个服务 DTC: Distributed Transaction Coordinator(分布式事务处理协调器),用于协调多个数据库、消息队列、文件系统等等资源管理器的事务,由于内部开发中并不使用这个功能,远程数据库服务器上也并不经常使用,因此建议关闭这个服务 禁用不使用的协议 Shared Memory 默认为已启用状态,这个协议只能用于本地连接,不能用于远程连接,一般用于其它协议出问题的时候管理作诊断使用 TCP/IP 禁用不需要使用的协议,减少网络攻击对象 减少监听的网卡和IP地址 改变监听端口号 安全地设置账户 Windows身份验证[微软推荐的方式] 优势: 1.访问SqlServer时速度更快,不用输入用户名和密码 2.可以利用Windows系统的自身工具和安全策略管理账户 3.安全确认和口令加密、审核、口令失效、最小口令长度和账号锁定 SqlServer身份验证 1.将sa账户名更改为其它账户名比如nocial,防止黑客利用sa进行攻击 2.删除不使用的账户 3.对已有账户设置安全密码[强制密码规则] 4.限制登录->远程登录、匿名登录 5.限制用户角色和权限,一般将权限设置到最低。设置角色的时候不要为public角色授予任何权限,并且从sysadmin这个角色中删除windows的administrators组,提高系统安全性。 删除不必要的数据库对象 删除危险的存储过程 xp_cmdshell:执行操作系统命令,这是一个系统后门[可以移动文件位置、创建用户、提升用户权限],建议不需要则删除掉。 ole自动化存储过程 任务管理存储过程 强化文件和目录安全 数据库最终以文件的形式存储在文件系统中 使用NTFS设置权限 限制共享【不能设置为完全控制】 及时审核日志 sqlserver的审核机制可以帮助跟踪并且阻止系统中没有授权的用户他的行为。比如没有授权的用户登录系统会阻止这次登录,并且把这次操作给记录下来。审核机制既能跟踪失败记录也能跟踪成功记录。所有的数据库平台均在不同程度上提供了审查功能。 跟踪用户行为 保护数据库 数据库性能优化 数据库的性能优化主要有两个方面:减少查询比较次数、减少资源的征用。 使用工具Sql Server Profiler优化数据库的性能,减少资源的征用 SqlServer Profiler的功能 Sql Server Profiler的用法  定义跟踪  登录连接、失败和断开  Select、Insert、Update和Delete语句  SQL批处理的开始或结束  写入到Sql server错误日志的错误  安全权限检查  Profiler执行的事件 让Profiler监视我们感兴趣的事件,可以监视的事件太多,监视太多会大大降低性能和增大表数据,只监视与数据库的性能密切相关的哪些事件。常见的感兴趣的事件:  执行查询的性能  单个用户或应用程序的活动  逻辑磁盘的读写  语句级别上的CPU占用  Standart模板的事件类 优化数据库性能可以从五个层次来进行:  优先级一:减少数据的访问【减少磁盘访问】  优先级二:返回更少数据【减少网络传输或磁盘访问】  优先级三:减少交互次数【减少网络传输或磁盘访问】  优先级四:减少开销【减少CPU及内存开销】  优先级五:利用更多资源【增加资源】 技术上从四个方面来解决性能优化问题 1、调整数据库结构设计 2、调整应用程序结构设计 3、调整数据库SQL语句 4、调整服务器内存分配 如果不熟悉sqlserver可以使用数据库引擎优化顾问来对数据库提出优化建议,然后通过系统管理的修改达到目的。 数据库引擎优化顾问  数据库引擎优化顾问介绍  分析一个或多个数据库的工作负荷和物理实现,工作负荷可以是优化的sql语句或者sqlserver profiler的跟踪文件和数据表。我们可以在运行引擎优化顾问前运用sqlserver profiler记录一些事件,然后将跟踪结果存储为文件或者数据表,然后把这些提供给数据库引擎优化顾问,让它去分析。  提出合理的物理设计结构,物理设计结构包括数据库中的索引、索引视图、非聚集索引、聚集索引视图等等。对工作负荷进行分析后,数据库优化顾问会建议添加删除修改数据库的物理设计结构。推荐一组合理的物理结构以降低工作负荷的开销。从而提高数据库的性能 数据库性能优化的常见问题 如何发现问题,如何分析导致性能降低的原因仍然是数据库管理员要掌握的知识。 事务占用资源的时间过长,造成阻塞 许多用户同时访问数据库的时候会产生大量事务,许多用户同时竞争一个资源导致占用资源的时间过长,造成阻塞。从而降低了数据库执行效率。产生这样的现象的原因如下: 1、多表连接查询,查询期间占用多个表 2、事务需要占用太多资源,容易出现多个事务占用对方资源的状况。从而导致死锁 解决之道: 1、避免多表连接查询,联合过多的表会在查询中占用过多的资源。很容易因为别的事务占用资源而相互等待。 2、使用统一的SQL语句规范,特别是访问表的顺序要保持一致,这样可以避免互相占用资源而导致的死锁。 不合理的数据文件设置,影响事务处理的性能 当事务处理产生大量数据的时候,数据文件的大小如果设置不合理将导致数据文件的不断扩展,这也会影响到事务处理的性能,进而影响到整个数据库的性能。 1、频繁操作数据库,导致日志文件增长的过快,因为日志文件记录数据库的原始操作。所以它的增长速度比数据文件要快得多。当日志文件的增长大小设置不合理的时候会导致频繁地扩展文件。从而影响性能 2、查询操作比较频繁,系统数据Tempdb的大小设置不合理。 查询操作比较频繁的时候系统数据Tempdb增长得会比较快,因为查询所产生的临时数据都存放在这个数据库上。如果Tempdb过小当查询数据量较大的时候Tempdb会自动扩展,如果遇到频繁的查询会导致Tempdb不断扩展,从而影响系统性能。这种情况我尽可能地使查询的返回结果比较小 3、大量插入数据,导致数据文件增长过快。不要设置数据文件的自动收缩,它会在忙碌的系统上导致不必要的性能开销。所以如果没有特别需要不要设置数据库的自动收缩。最好采用手动收缩。 磁盘数据组织不合理,导致磁盘的访问次数过多 数据库的磁盘访问都是按照页来访问数据的,无论访问的数据再少都是以页为单位读取,1页为8K。所以如果将经常访问的数据放在一起,数据库读取尽量少的页面就能够完成读取操作。这样效率自然就提高了。也减少了磁盘头的来回移动。否则会多次读取硬盘页面导致访问的效率降低。 对于表A和表B、表C、表D,如果经常查询表A和表B中的数据,那么可以将他们放在同一个文件组M中;如果经常访问表C和表D中的数据可以将他们放在同一个文件组N中。这样读取效率就比较高,因为一次读取就可能包含了两个表中的数据,因此提高了查询效率。要解决“磁盘数据组织不合理,导致磁盘的访问次数过多”这个问题,我们可以将经常读写的数据放置在不同的磁盘上,也就是将经常在一起被多表连接查询的表放在同一个文件组上。这里强调:这里反复提到的“不同的磁盘”指的的是不同的磁盘,而不是同一个硬盘的不同分区。 批量导入数据的时候,要进行特殊设置 当用户需要大批量导入数据的时候会突然增加很多日志记录,并且如果数据表上有索引,数据表每增加一条记录就会在索引上增加一条数据从而降低插入的性能。解决方案: 1、大批量导入数据的时候设置数据库的恢复模式为“大容量日志恢复模式” 2、导入前禁用索引,导入完毕后重建索引。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值