搭建存储服务器需要先准备一台拥有足够存储空间和配置的服务器,并配置相关的网络连接。
对于 Windows 系统,可以使用 Windows Server 搭建存储服务器:
安装 Windows Server 操作系统。
启动服务器,进入控制面板。
在“程序”选项卡中,选择“启用或关闭 Windows 功能”。
选择“存储服务器”功能,然后单击“确定”。
按照提示,完成存储服务器的配置。
对于 Ubuntu 系统,可以使用 Samba 搭建存储服务器:
在终端中,执行以下命令安装 Samba:sudo apt-get install samba
创建一个存储文件夹,并配置存储权限。
编辑 Samba 配置文件 /etc/samba/smb.conf,添加以下内容:
[共享名称]
path = /路径/到/存储文件夹
writable = yes
browsable = yes
guest ok = yes
重启 Samba 服务:sudo service smbd restart
在客户端中,添加存储服务器,并验证是否能够正常连接。
注意:以上步骤是大致步骤,具体步骤及详细配置方式可以参考官方文档或者搜索教程
从Windows Server 2012 开始,微软为服务器操作系统增加了原生iSCSI服务,之前则是需要依靠第三方的相关工具来实现。为了保证存储的可靠性,iSCSI通常和raid5配合使用,首先使用相同型号的多块硬盘(最少3块)创建raid5卷,在任意一块空闲的硬盘上右键,选择"创建raid5卷"
将参加raid5的磁盘全部添加
顺带格式化,推荐勾上"快速格式化",低格没必要而且速度很慢
Raid5卷创建完成
现在进入服务器管理器,添加ISCSI相关服务
在添加服务器角色页面勾选"文件和存储服务"-"文件和Iscsi服务"-"Iscsi目标服务器"和"Iscsi目标存储提供程序"
正在安装
安装Iscsi服务安装完成就可以对虚拟磁盘进行配置,进入【服务器管理器】-【文件和存储服务】-【iSCSI】创建虚拟磁盘
存储位置自然选择刚才创建的raid5卷
指定虚拟磁盘的名称
指定虚拟磁盘的空间大小,这里需要注意以下几点:首先,虚拟磁盘的总大小不能大于虚拟磁盘文件所在分区的大小。在大小的增长模式中,"固定大小"会让虚拟磁盘文件的大小固定在最大大小,而"动态扩展"则会让虚拟磁盘的文件的大小随着存储在虚拟磁盘内的文件逐渐增多而自动增大,但上限依然为"大小"用户设定的值。推荐选择前者,一次性分配空间大小相对于后者,虚拟磁盘的读写性能更高
指定目标的名称
这里指定允许访问虚拟磁盘的客户端,点击"添加"按钮添加客户端
通常标识目标发起程序有两种方法,一种是直接使用目标发起程序ID,但是看起来2009年之前的Windows版本并不支持此方法,因此我们通常选择下面的通过匹配相关计算机的值来标识客户端,IP地址应该是直观且比较方便的,将允许连接该虚拟磁盘的客户端IP地址添加进去,多个IP地址需要分别添加。
最后检查一下配置信息,准确无误后点击"创建"
创建完成
现在在【服务器管理器】-【文件和存储服务】-【iSCSI】下就能看到虚拟磁盘和目标的工作状态
接下来还需要在防火墙里放通Iscsi相关服务,强烈不建议采取关闭Windows防火墙等一刀切的方式
服务器配置到此告一段落,现在就可以配置Iscsi客户端了,打开【管理工具】-【Iscsi发起程序】
输入目标服务器的IP,点击"快速连接"
显示"登录成功",此时,虚拟磁盘已经连接到本地计算机。
现在打开"磁盘管理",就能看到虚拟磁盘,之后的步骤,和操作本地磁盘的方式一样,第一次使用需要初始化,然后就能创建分区了
完成后就能像使用本地磁盘一样使用虚拟存储了
现在回到服务器端,可以看到目标状态已经显示为"已连接"
最后,如果需要断开虚拟磁盘,需要先在【磁盘管理】里将目标磁盘"脱机",然后回到"Iscsi发起程序"断开目标连接
要求下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:
Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或 Microsoft SQL Server 2005 的可用实例
Microsoft Visual Basic 6.0(针对使用 Visual Basic 的 ADO 示例)
本文的部分内容假定您熟悉下列主题:
数据传输服务
链接服务器和分布式查询
Visual Basic 中的 ADO 开发
回到顶端
示例
导入与追加
本文使用的示例 SQL 语句演示了“创建表”查询。该查询通过使用 SELECT...INTO...FROM 语法将 Excel 数据导入新的 SQL Server 表。如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用 INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。
使用 DTS 或 SSIS
可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将 Excel 数据导入到 SQL Server 表中。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($) 的 Excel 对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表 Excel 指定的范围。
使用链接服务器
要简化查询,可以将 Excel 工作簿配置为 SQL Server 中的链接服务器。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306397 如何:结合 SQL Server 链接的服务器和分布式查询使用 Excel
下列代码将 Excel 链接服务器“EXCELLINK”上的 Customers 工作表数据导入新的名为 XLImport1 的 SQL Server 表:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
还可以通过按照以下方式使用 OPENQUERY 以全通过方式对源数据执行查询:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
'SELECT * FROM [Customers$]')
使用分布式查询
如果不想将对 Excel 工作簿的永久连接配置为链接服务器,可以通过使用 OPENDATASOURCE 或 OPENROWSET 函数为特定目的导入数据。下列代码示例也能将 Excel Customers 工作表数据导入新的 SQL Server 表:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xlsExtended Properties=Excel 8.0')...[Customers$]
SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0Database=C:\test\xltest.xls', [Customers$])
SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
使用 ADO 和 SQLOLEDB
当通过使用 Microsoft OLE DB for SQL Server (SQLOLEDB) 在 ADO 应用程序中连接到 SQL Server 时,可以使用与“使用分布式查询” 一节中相同的“分布式查询”语法将 Excel 数据导入 SQL Server。
下列 Visual Basic 6.0 代码示例要求添加对 ActiveX 数据对象 (ADO) 的项目引用。此代码示例还演示了如何在 SQLOLEDB 连接上使用 OPENDATASOURCE 和 OPENROWSET。
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDBData Source=<server>" &_
"Initial Catalog=<database>User ID=<user>Password=<password>"
'Import by using OPENDATASOURCE.
strSQL = "SELECT * INTO XLImport6 FROM " &_
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " &_
"'Data Source=C:\test\xltest.xls" &_
"Extended Properties=Excel 8.0')...[Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " &lngRecsAff
'Import by using OPENROWSET and object name.
strSQL = "SELECT * INTO XLImport7 FROM " &_
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " &_
"'Excel 8.0Database=C:\test\xltest.xls', " &_
"[Customers$])"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " &lngRecsAff
'Import by using OPENROWSET and SELECT query.
strSQL = "SELECT * INTO XLImport8 FROM " &_
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " &_
"'Excel 8.0Database=C:\test\xltest.xls', " &_
"'SELECT * FROM [Customers$]')"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " &lngRecsAff
cn.Close
Set cn = Nothing
使用 ADO 和 Jet Provider
上一节中的示例使用 ADO 和 SQLOLEDB Provider 连接到从 Excel 到 SQL 导入的目标。也可以使用 OLE DB Provider for Jet 4.0 来连接到 Excel 源。
Jet 数据引擎可以通过使用具有三种不同格式的特殊语法来在 SQL 语句中引用外部数据库:
[Full path to Microsoft Access database].[Table Name]
[ISAM NameISAM Connection String].[Table Name]
[ODBCODBC Connection String].[Table Name]
本节使用第三种格式创建到目标 SQL Server 数据库的 ODBC 连接。可以使用 ODBC 数据源名称 (DSN) 或者 DSN-less 连接字符串:
DSN:
[odbcDSN=<DSN name>UID=<user>PWD=<password>]
DSN-less:
[odbcDriver={SQL Server}Server=<server>Database=<database>
UID=<user>PWD=<password>]
下列 Visual Basic 6.0 代码示例要求添加对 ADO 的项目引用。此代码示例演示了如何使用 Jet 4.0 Provider 通过 ADO 连接将 Excel 数据导入到 SQL Server。
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0" &_
"Data Source=C:\test\xltestt.xls" &_
"Extended Properties=Excel 8.0"
'Import by using Jet Provider.
strSQL = "SELECT * INTO [odbcDriver={SQL Server}" &_
"Server=<server>Database=<database>" &_
"UID=<user>PWD=<password>].XLImport9 " &_
"FROM [Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " &lngRecsAff
cn.Close
Set cn = Nothing
也可以通过使用该语法(Jet Provider 支持)将 Excel 数据导入其他 Microsoft Access 数据库、索引顺序存取方法 (ISAM)(“desktop”)数据库或 ODBC 数据库。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)