问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何利用SQL Server 2012数据库操作事务管理

发布网友 发布时间:2022-04-26 08:25

我来回答

1个回答

热心网友 时间:2022-04-11 00:36

  一、启用FileTable
  1、修改数据库引擎的属性
  打开“SQL Server配置管理器”,修改SQL Server数据库引擎的属性。使用此页可针对此 Microsoft SQL Server 2012安装启用 FILESTREAM。

  (1)针对 Transact-SQL 访问启用 FILESTREAM
  选中此项可针对 Transact-SQL 访问启用 FILESTREAM。 必须选中此控制选项,才能使用其他控制选项。如果不启用此选项,就不能添加FileStream文件组。
  (2)针对文件 I/O 流访问启用 FILESTREAM
  选中此项可针对 FILESTREAM 启用 Win32 流访问。
  (3)Windows 共享名
  使用此控制选项可输入将用来存储 FILESTREAM 数据的 Windows 共享的名称。默认为该SQL Server实例的名称。
  (4)允许远程客户端针对 FILESTREAM 数据启用流访问
  选中此控制选项可允许远程客户端访问此服务器上的此 FILESTREAM 数据。
  
  2、修改服务器的属性
  打开“SQL Server Management Studio”,修改该实例的配置。默认配置如下:

  上述选项解释如下:
  (1)“FILESTREAM 访问级别”显示 SQL Server 实例上支持的 FILESTREAM 的当前级别。若要更改访问级别,请选择以下值之一:
  已禁用
  无法将二进制大型对象 (BLOB) 数据存储在文件系统中。此为默认值。即filestream access level=0
  已启用 Transact-SQL 访问
  可使用 Transact-SQL 访问 FILESTREAM 数据,但不能通过文件系统进行访问。即filestream access level=1
  已启用完全访问
  FILESTREAM 数据可使用 Transact-SQL 以及通过文件系统进行访问。即filestream access level=0
  注意:在首次启用 FILESTREAM 时,您可能需要重新启动计算机才能配置驱动程序。
  (2)“FILESTREAM 共享名称”显示在安装过程中选择的 FILESTREAM 共享的只读名称。
  
  在本次实验中,我们将“FILESTREAM 访问级别” 设定为:已启用完全访问。
  如果是通过T-SQL脚本执行,则运行以下脚本:
  EXEC sys.sp_configure N'filestream access level', N'2'
  RECONFIGURE WITH OVERRIDE
  
  注意:设置完成之后,重启实例。
  
  3、配置防火墙
  若要在防火墙保护的环境中使用 FILESTREAM,客户端和服务器都必须能够将 DNS 名称解析为包含 FILESTREAM 文件的服务器。FILESTREAM 要求 Windows 文件共享端口 139 和 445 处于打开状态。
  
  二、配置文件组
  1、添加文件组
  完成上述操作之后,就可以为该数据库添加专用于FileStream的文件组。

  如果是通过脚本操作,请运行以下脚本:
  ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM
  
  2、添加文件
  完成上述操作之后,就可以为该数据库添加FilStream类型的数据库文件。

  在本例中,系统并没有为“FileStream数据”的文件类型创建mdf或ndf文件,而是在文件夹C:\SqlData下面自动创建以逻辑名称命名的文件夹,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的头文件。当这个数据库被删除时,mdf、ndf、log连同这个文件夹都会被删除。

  如果是通过脚本操作,请运行以下脚本:
  ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]
  注意:在上例中,在运行脚本之前,必须存在C:\SqlData,建议使用右侧的选择按钮选择路径。如果路径不存在,就会报错:

  同时不能存在重复的文件夹,即不能存在C:\SqlData\FileData。否则也会报错:

  
  3、启动非事务访问
  FileTable 使 Windows 应用程序可以获取 FILESTREAM 数据的 Windows 文件句柄而不需要 SQL Server 事务。为了允许对 SQL Server 中存储的文件进行此非事务性访问,必须为要包含 FileTable 的每个数据库在数据库级别上指定所需的非事务性访问级别。

  选项解释如下:
  (1)FILESTREAM 非事务访问
  为从文件系统到 FileTables 中存储的 FILESTREAM 数据的非事务性访问指定以下选项之一:OFF、READ_ONLY 或 FULL。
  如果在服务器上未启用 FILESTREAM,则该值将设置为 OFF 并且被禁用。在本次实验中,将其设置为FULL。
  (2)FILESTREAM 目录名称
  为与所选数据库相关联的 FILESTREAM 数据指定目录名称。在 FileTable 文件夹层次结构中,此数据库级目录将成为在实例级别为 FILESTREAM 指定的共享名称的子级以及在数据库中创建的 FileTable 的父级。
  如果启用非事务性访问时没有提供目录名称,则在以后必须提供它,这样才能在数据库中创建 FileTable。

  如果是通过脚本执行,如下:
  ALTER DATABASE db01
  SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )
  注意:更改现有数据库时,调用带 DIRECTORY_NAME FILESTREAM 选项的 ALTER DATABASE (Transact-SQL) 语句。使用这些选项更改目录名称时,数据库必须以独占方式锁定,没有打开的文件句柄。

  说明:为检查是否在数据库上启用了非事务性访问,可以查询目录视图,脚本如下:
  SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
  FROM sys.database_filestream_options
  
  三、创建FileTable
  1、创建第一个FileTable
  “SQL Server Management Studio”只提供一个脚本模板,要想创建FileTable还是得用脚本完成:
  USE db01
  CREATE TABLE ImageTable1 AS FILETABLE
  官方的范本为:
  USE [db01]
  CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
  WITH
  (FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)
  
  2、创建第二个FileTable
  CREATE TABLE ImageTable2 AS FILETABLE
  
  3、获取共享路径
  文件表创建之后,就会相应的产生一个文件表共享目录,该目录路径可以通过内建函数获取:
  SELECT FileTableRootPath('ImageTable1')
  本次实验所返回的结果为:\\SQL1\SqlFile\ImageFiles\ImageTable1
  
  4、查看
  通过Windows资源管理器,可见已经创建了以GUID命名的文件夹。
  
  通过SQL Server Management Studio,查看表的结构。

  
  四、操作
  1、向文件夹中添加文件
  通过 “Windows资源管理器”,向文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一个文件A01.GIF。然后运行脚本:
  select * from ImageTable1
  结果如下:
  
  可见, SQL Server自动在Table中添加了记录。
  
  2、文件改名
  运行以下脚本:
  update ImageTable1 set name='Cup.GIF' where name='A01.GIF'
  通过“Windows资源管理器”,查看文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1,可见文件A01.GIF已经被改名为Cup.GIF 。
  
  3、查看共享文件夹
  我们可以继续复制其他文件,然后通过“Windows资源管理器”,查看文件夹。

  
  4、删除文件
  可以使用脚本删除,例如:
  Delete ImageTable1 where name='Cup.GIF'
  或者,通过“Windows资源管理器”直接删除该文件。
  
  五、备份和还原
  
  1、备份数据库
  使用 SQL Server 备份数据库时,FILESTREAM 数据将与数据库中的结构化数据一起备份。

  
  2、部分备份
  如果不想将 FILESTREAM 数据与关系数据一起备份,则可以使用部分备份将 FILESTREAM 文件组排除在外。

  
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? sql server 2012数据库有什么作用? sqlserver2012怎么导入数据库 sql server 2012 数据库问题 喝荷叶茶有什么好处,荷叶茶的功效与禁忌 荷叶的功效与作用及禁忌便稀可以服吗 荷叶茶的功效与禁忌? 荷叶的作用 荷叶的功效与作用及禁忌都有哪些呢? 中药荷叶主要功效是什么,有什么禁忌,那些人不适宜? “※”符号怎么打出来? ___符号怎么打出来 怎样打出符号来 怎样打出符号 符号怎么打出来 微信加了一个陌生人,然后删除了,她知道,对我有影响吗? 我在微信上加了一个网友,他为什么把我删除? 微信加了一个陌生人,然后删除了,她知道,对我有影响吗? 关于微信,我把对方删了,又想加回来,一加就通过,他会不会有提示啊?他有没有删我,我用其他微信加他就 我把微信好友拉黑并删除了,重新扫二维码能加上吗? 飞利浦剃须刀是7000中文说明书 sql server2012 jdbc如何连接数据库? SQL SERVER 2012,可以还原其他机器的sql server的数据库然后保持现有... 如何利用SQL Server2012修改数据库文件初始大小 如何设置将SQL SERVER2012数据库备份还原到SQL SER sql server 2012连接不上数据库是什么原因? sql server 2012不能附加数据库,服务器版本问题。 如何设置将SQL SERVER2012数据库备份还原到SQL SERVER2008上_百度... sql server2012高可用性多个数据库之间怎么同步 工字钢56c和56b有啥区别 SEO中56B是什么意思 56BMB是多少流量? 如何打开操作系统自带的“计算机”程序,将(56B)H和(1011100)B分别转换为十进制数,需要每一步详细过 56工字钢一米多少公斤? 永恒之塔rm-56b盾怎么获得 奔驰大灯端子56b在哪 56B号工字钢的力学性能,抗拉强度和抗弯刚度。 飞机上座位56a和56b在一起吗 关于戴尔笔记本N4050 (56B)问题! 大众尚酷灯端子56b故障码什么意思? 网络设备水晶头的线序