SQL2012安装 SQL Server 数据库引擎服务实例功能 时出错 等待数据库引擎恢复句柄失败,怎么解救

SQL2012安装 SQL Server 数据库引擎服务实例功能 时出错 等待数据库引擎恢复句柄失败,怎么解救,第1张

Hi,

1.You need to Uninstall all the previous Installations of SQL Server.You not only need to uninstall them,also you need to delete all the registry values related to SQL server.

2.Navigate to C:\Program Files\Microsoft SQL Server and delete all the files present in the folder.

3.Double click on the SQL Server setup to begin the installation and proceed with the default settings. When you come to Server Configuration Screen, Change the Account Name of Database Engine Service to NT AUTHORITY\NETWORK SERVICE.

4.If, after changing the Account Name to NT AUTHORITY\NETWORK SERVICE, you are getting validation error it means that your previous installation files of SQL Server are not completely removed.Try to change the Instance name of the SQL Server.Also delete all the registry files of previous installations.

一、启用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 文件组排除在外。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9903225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存