×

sql server使用方法

sql server使用方法(SQLServer中导入导出数据的三种方式(一))

admin admin 发表于2024-06-07 09:54:45 浏览13 评论0

抢沙发发表评论

大家好,sql server使用方法相信很多的网友都不是很明白,包括SQLServer中导入导出数据的三种方式(一)也是一样,不过没有关系,接下来就来为大家分享关于sql server使用方法和SQLServer中导入导出数据的三种方式(一)的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

SQLServer中导入导出数据的三种方式(一)

在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。   在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。 一、使用方式的比较 1. 使用Transact-SQL进行数据导入导出   我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。 SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同   当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。   在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。它们的功能基本上相同,不同之处主要有两点。 (1) 调用方式不同。   OPENDATASOURCE的参数有两个,分别是OLE DB Provider和连接字符串。使用OPENDATASOURCE只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在OPENDATASOURCE(...)后进行引用。 在SQL Server中通过OPENDATASOURCE查询Access数据库abc.mdb中的table1表 SELECT * FROM OPENDATASOURCE(’Microsoft.Jet.OLEDB.4.0’, ’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security Info=False’)... table1   OPENROWSET相当于一个记录集,可以将直接当成一个表或视图使用。   在SQL Server中通过OPENROWSETE查询Access数据库abc.mdb中的table1表 SELECT * FROM OPENROWSET(’Microsoft.Jet.OLEDB.4.0’, ’abc.mdb’; ’admin’;’’,’SELECT * FROM table1’)

sql server数据库怎么用

1、选择开始菜单中→程序→【Management SQLServer 2008】→【SQL ServerManagement Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。2、在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点3、右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。4、执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作5、在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。6、在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。7、在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。8、切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。9、切换到【文件组】页,在这里可以添加或删除文件组。10、完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。--另外,可以使用SQL语句创建数据库

使用SQLserver导入和索引Microsoft Word文档

  本技巧摘自SQL Server杂志的一期 如需了解更多的技巧 请访问SQL Server的使用技巧中心      问 我需要将Microsoft Word文档导入至SQL Server并索引这些文档 以便在关系查询中使用这些文档 怎样导入和索引文档呢?   答 SQL Server允许您以多种方式导入Word文档 让我们看看几种最常用的方法 请注意 在将文档导入至SQL Server之前 您需要创建一个image数据类型列 用于存放数据 然后 您可以使用textcopy exe命令行工具将image文件读入数据库 从而完成文档的导入操作 如果需要该工具的基本说明文档 请在命令提示状态下键入textcopy /? 将Word文档导入SQL Server的另一个方法是使用Microsoft ActiveX Directory Object(ADO)Stream接口编写导入代码 您可以在Microsoft产品支持服务(PSS)的通过使用ADO Stream对象访问和修改SQL Server BLOB数据一文中找到示例代码     此外 您也可以将二进制数据移到SQL Server中 有关这一方法的详细说明 请参阅PSS的使用ADO检索和更新SQL Server文本域一文 移动二进制数据允许您将数据的一部分存放在数据库中 这在需要控制数据格式时尤其有用 例如 如果只需要数据中 到 之间的字节 导入二进制数据的速度远远高于使用ADO Stream接口的速度 这是由于SQL Server从磁盘上检索数据的量大为减少 人们通常使用这一技术来存储位掩码 用于表示应用程序的开或关标志位     SQL Server 自带了说明了如何移动二进制数据的示例代码 如需查看该代码 只需在安装有SQL Server 光盘上代码示例的驱动器上选择 \Program Files\Microsoft SQL Server\ \Tools\DevTools\Samples\ado路径 展开该可执行文件 在Visual Basic目录下查找Samples子目录 在Employee示例下 注意一下该代码是如何使用FillDataFields()函数的     如需索引Word文档 SQL Server 和SQL Server 都提供了全文搜索组件 该组件混合使用了多种技术 用以索引大型文本和image列 在执行全文搜索时 您需要指定image列所含的文件类型 以及从二进制数据中析取信息所需的筛选(filter) 有关使用全文索引的详细信息 请参阅SQL Server在线书籍中的相关主题 并阅读David Jones 年 月发表在SQL Server杂志网站上的名为构建更好的搜索引擎一文 请注意 索引Word文档并不会自动生成包含文档中关键字的一组关系表 但是 索引文件让您将这些Word文档包含在您的搜索中 以下是从数据中析取关键字的可行方式     使用OLE自动处理从文档中读取用户定义的关键字 在装载该文档时将这些关键字保存在关系表中   使用OLE自动处理打开文档并将其保存为文本( txt)格式 为了析取重要的词语 您可以使用自己的 词语分析器 遍历该文本文件 文字分析器查看文档中的每个词语 去除一些无用文字 并将每个唯一的词语与其出现的次数一道存储起来   在新的全文索引文档中搜索特定的关键字 并将这些关键字输入到关系表中   SQL Server 提供了多个强大的工具和接口 用于帮助用户实现二进制Microsoft Office文档的快速装载 搜索和检索    lishixinzhi/Article/program/SQLServer/201311/22184

如何使用SQL数据库

方法:1、首先打开SQL SERVER自带的数据库管理工具,从开始菜单中可以找到,如图点击进去;2、开始连接SQL SERVER服务器,就是我们装好的SQL SERVER 服务器;3、如图,右击数据库,选择第一个,新建一个数据库;4、填写数据库的名称(箭头方向),下面是设置自动增长的,一般不用管,默认5、点击确定后就可以生成一个数据库,此时里面是没有表的;6、右击表新建一个表,填写你要的字段名称7、填完字段名称后点击字段名称那个内部窗口的小叉叉,然后就提示你输入表名了,填写下表名,一个数据库的建立过程就是这样的;注意事项:建立数据库需要先打开数据库服务器。

在SQL Server2000数据库的事务处理方法

52.使用完错误代码之后, 应该随手清空它,以免造成下次错误捕获不正确,我们使用一uju error变量() 53.为了防止多次数据库操作导致数据库不完整( )我们可以使用(colse) 54. connection 对象为我们提供了三个与事务相关的方法,请写上它们:开启事务:(connedtion.begintrans ),结束事务并保有更改:connection(.committrans ),结束事务并却小更改:connection(.rollbacktrans ) 55.如果我们查得到数据表中某个字段的信息需要用recordset对象的(fields )集合中的(name )对象。 56.取得field对象的方法是:set field=recordset.fields.item(i),我们可以通过field对象的(name)属性得到字段名,还可以通过( type)属性得到字段的类型。 57.我们可以在记录集内移动指针,以便操作不同的数据记录,如果我们要将指针移到最后一条记录,可以使用(recordset.movelast )方法,将指针移到首记录使用(recordset.movefirst )方法,移动到上一条记录使用(recordset.previous )方法,移动到下一条记录可使用(recordset.movenext )方法。 58.删除记录,我们可以直接使用SQL语句中的delete语句,也可以将记录查询到之后使用recordset对象的( delete)方法来删除当前记录。虽然直接使用Delete语句删除记录非常方便,但有时对于一些需要进行复杂判断才决定是否删除记录的情况下,我们还是要使用recordset对象的(delete )方法来删除记录。 59.更新一条记录除可以使用update语句外,还可以将记录查询到之后,改变各字段的值,然后使用recordset对象的( addnew )方法来更新数据。虽然直接使用update语句更新数据十分方便,但有时对于需要进行一些不规则更新的时候还是要使用到recordset对象的(addnew )方法来更新数据记录。

SQL Server执行动态SQL正确方式

  SQL Server执行动态SQL的话 应该如何实现呢?下面就为您介绍SQL Server执行动态SQL两种正确方式 希望可以让您对SQL Server执行动态SQL有更深的了解

  动态SQL:code that is executed dynamically 它一般是根据用户输入或外部条件动态组合的SQL语句块 动态SQL能灵活的发挥SQL强大的功能 方便的解决一些其它方法难以解决的问题 相信使用过动态SQL的人都能体会到它带来的便利 然而动态SQL有时候在执行性能(效率)上面不如静态SQL 而且使用不恰当 往往会在安全方面存在隐患(SQL 注入式攻击)

  动态SQL可以通过EXECUTE 或SP_EXECUTESQL这两种方式来执行

  EXECUTE

  执行 Transact SQL 批中的命令字符串 字符串或执行下列模块之一:系统存储过程 用户定义存储过程 标量值用户定义函数或扩展存储过程 SQL Server 扩展了 EXECUTE 语句 以使其可用于向链接服务器发送传递命令 此外 还可以显式设置执行字符串或命令的上下文

  SP_EXECUTESQL

  执行可以多次重复使用或动态生成的 Transact SQL 语句或批处理 Transact SQL 语句或批处理可以包含嵌入参数 在批处理 名称作用域和数据库上下文方面 SP_EXECUTESQL 与 EXECUTE 的行为相同 SP_EXECUTESQL stmt 参数中的 Transact SQL 语句或批处理在执行 SP_EXECUTESQL 语句时才编译 随后 将编译 stmt 中的内容 并将其作为执行计划运行 该执行计划独立于名为 SP_EXECUTESQL 的批处理的执行计划 SP_EXECUTESQL 批处理不能引用调用 SP_EXECUTESQL 的批处理中声明的变量 SP_EXECUTESQL 批处理中的本地游标或变量对调用 SP_EXECUTESQL 的批处理是不可见的 对数据库上下文所作的更改只在 SP_EXECUTESQL 语句结束前有效

  如果只更改了语句中的参数值 则 sp_executesql 可用来代替存储过程多次执行 Transact SQL 语句 因为 Transact SQL 语句本身保持不变 仅参数值发生变化 所以 SQL Server 查询优化器可能重复使用首次执行时所生成的执行计划

  一般来说 我们推荐 优先使用SP_EXECUTESQL来执行动态SQL 一方面它更加灵活 可以有输入输出参数 另外一方面 查询优化器更有可能重复使用执行计划 提高执行效率 还有就是使用SP_EXECUTESQL能提高安全性;当然也不是说要完全摈弃EXECUTE 在特定场合下 EXECUTE比SP_EXECUTESQL更方便些 比如动态SQL字符串是VARCHAR类型 不是NVARCHAR类型 SP_EXECUTESQL 只能执行是Unicode的字符串或是可以隐式转换为ntext的常量或变量 而EXECUTE则两种类型的字符串都能执行

  下面我们来对比看看EXECUTE 和SP_EXECUTESQL的一些细节地方

  EXECUTE(N SELECT * FROM Groups ) 执行成功

  EXECUTE( SELECT * FROM Groups ) 执行成功

  SP_EXECUTESQL N SELECT * FROM Groups ; 执行成功

  SP_EXECUTESQL SELECT * FROM Groups 执行出错

  Summary:EXECUTE 可以执行非Unicode或Unicode类型的字符串常量 变量 而SP_EXECUTESQL只能执行Unicode或可以隐式转换为ntext的字符串常量 变量

  DECLARE @GroupName VARCHAR( );SET@GroupName = SuperAdmin ;

  EXECUTE( SELECT * FROM Groups WHERE GroupName= + SUBSTRING(@GroupName ) + ); SUBSTRING 附近有语法错误

  DECLARE @Sql VARCHAR( );

  DECLARE @GroupName VARCHAR( );SET@GroupName = SuperAdmin ;

  SET@Sql= SELECT * FROM Groups WHERE GroupName= + SUBSTRING(@GroupName ) +

   PRINT @Sql;EXECUTE(@Sql);

  Summary:EXECUTE 括号里面只能是字符串变量 字符串常量 或它们的连接组合 不能调用其它一些函数 存储过程等 如果要使用 则使用变量组合 如上所示

  DECLARE @Sql VARCHAR( );

  DECLARE @GroupName VARCHAR( );SET@GroupName = SuperAdmin ;

  SET@Sql= SELECT * FROM Groups WHEREGroupName=@GroupName

   PRINT @Sql;EXECUTE(@Sql); 出错:必须声明标量变量 “@GroupName” SET@Sql= SELECT * FROM Groups WHERE GroupName= + QUOTENAME(@GroupName )

  EXECUTE(@Sql); 正确:

  DECLARE @Sql NVARCHAR( );

  DECLARE @GroupName NVARCHAR( );SET@GroupName = SuperAdmin ;

  SET@Sql= SELECT * FROM Groups WHEREGroupName=@GroupName

  PRINT @Sql;

  EXEC SP_EXECUTESQL @Sql N @GroupNameNVARCHAR @GroupName

  查询出来没有结果 没有声明参数长度

  DECLARE @Sql NVARCHAR( );

  DECLARE @GroupName NVARCHAR( );SET@GroupName = SuperAdmin ;

  SET@Sql = SELECT * FROM Groups WHERE GroupName=@GroupName

  PRINT @Sql;

  EXEC SP_EXECUTESQL @Sql N @GroupName NVARCHAR( ) @GroupName

  Summary:动态批处理不能访问定义在批处理里的局部变量 SP_EXECUTESQL 可以有输入输出参数 比EXECUTE灵活

  下面我们来看看EXECUTE SP_EXECUTESQL的执行效率 首先把缓存清除执行计划 然后改变用@GroupName值SuperAdmin CommonUser CommonAdmin分别执行三次 然后看看其使用缓存的信息

  DBCC FREEPROCCACHE;

  DECLARE @Sql VARCHAR( );

  DECLARE @GroupName VARCHAR( );SET@GroupName = SuperAdmin ; CommonUser CommonAdmin

  SET@Sql = SELECT * FROM Groups WHERE GroupName= + QUOTENAME(@GroupName )

  EXECUTE(@Sql); SELECTcacheobjtype objtype usecounts sql

  FROM sys syscacheobjects

  WHERE sql NOTLIKE %cache%

  ANDsql NOTLIKE %sys % ;

  依葫芦画瓢 接着我们看看SP_EXECUTESQL的执行效率

  DBCC FREEPROCCACHE;

  DECLARE @Sql NVARCHAR( );

  DECLARE @GroupName NVARCHAR( );SET@GroupName = SuperAdmin ; CommonUser CommonAdmin

  SET@Sql = SELECT * FROM Groups WHERE GroupName=@GroupName

  EXECUTESP_EXECUTESQL @Sql N @GroupName NVARCHAR( ) @GroupName;

  SELECTcacheobjtype objtype usecounts sql

  FROM sys syscacheobjects

  WHERE sql NOTLIKE %cache%

  ANDsql NOTLIKE %sys % ;

lishixinzhi/Article/program/SQLServer/201311/22279

远程连接SQL Server 的方法

远程连接SQL Server 2000的方法

   一 看ping 服务器IP能否ping通。

  这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。

   二 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。

  如telnet 202.114.100.100 1433

  通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。

  如果这一步有问题,应该检查以下选项。

  1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。

  2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单-》程序-》Microsoft SQL Server-》服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。

  3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。

  事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。

  4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。

  5 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入

  netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。

  如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。

   三 检查客户端设置

  程序-》Microsoft SQL Server -》 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。

   四 在企业管理器里或查询那分析器连接测试

  企业管理器-》右键SQlserver组-》新建sqlserver注册-》下一步-》写入远程IP-》下一步-》选Sqlserver登陆-》下一步-》写入登陆名与密码(sa,password)-》下一步-》下一步-》完成

  查询分析器-》文件-》连接-》写入远程IP-》写入登录名和密码(sa,password)-》确定

  通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。

  修改默认连接超时的方法:

  企业管理器-》工具-》选项-》在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡-》连接设置-》在 登录超时(秒) 后面的框里输入一个较大的数字

  查询分析器-》工具-》选项-》连接-》在 登录超时(秒) 后面的`框里输入一个较大的数字

  通常就可以连通了,如果提示错误,则进入下一步。

   五 错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。 解决方法如下所示:

  1 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server。

  2 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。

  3 在"身份验证"下,选择"SQL Server和 Windows "。

  4 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。

   附注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议)

;

几个技巧解析SQL Server群集的难题[2]

  为了将停机时间减到最少 您很可能必须使用日志传送 除非您的数据库相当小并且在一段时间内没有用户建立连接 在移交之前 您都可以正确执行日志传送 接着 删除这些用户 剪切并传送最后的日志 然后指向新实例上的应用程序 (有关感兴趣的日志传送替代方法 请参阅下面的数据库镜像部分 )如果使用DNS别名 您甚至可能不需要指向新实例上的应用程序 而是只需更新 DNS 别名 这种方法的优点是 如果您的迁移只进行了一部分 但必须要回退到原始状态 那您至少还有原始文件

  您还可以采用一种成本较低的方案 但需要您做更多的预先规划 一个群集可以支持多个SQL Server实例 但每个实例必须有其自己的磁盘资源 因此 在划分SAN时 请留出一个LUN 以备将来升级 要执行升级 请在此磁盘资源上安装 SQL Server 二进制文件 您可以演习一下该系统 当您准备好后 关闭当前SQL Server 将磁盘资源从旧的 SQL Server组中移出 更新依赖关系 然后使新SQL Server实例在线 连接旧实例中的数据库 然后启动并运行 (您已提早备份了所有数据 对吗?)

  这就是成本较低的方法 实行这个方法需要承担一些风险 如果出现故障 您无法将数据库与新实例分离开来并放回原来位置 您的操作已简化为从备份恢复 这意味着需要很长的停机时间

  还有一种方法是将两个SQL Server实例都放在您的SAN中 前提是您有足够的磁盘空间 将生产备份(和日志传送)恢复为新实例 然后按前面介绍的步骤继续进行 但现在您有退路了 而且 一旦完成迁移 您还可以释放旧实例占用的SAN资源 您只需增加额外的磁盘

  负载平衡

  让我们首先揭穿这样一个常见误解 MSCS群集是用于获得高可用性的 而非用于实现负载平衡 此外 SQL Server没有任何内置的 自动负载平衡功能 您必须通过应用程序的物理设计来实现负载平衡 这意味着什么?

  随着表的逐渐增长 您可能会预料到性能会降低 特别是在涉及到表扫描操作时 当行数达到数百万或数十亿时 传统的解决方案会使用已分区视图 这种视图由若干具有相同结构 使用 union ALL 挂接在一起的表组成 此外 还会在适当位置放置 CHECK 约束来区分这些成员表 而这会阻止跨已分区视图复制数据 如果在 CHECK 约束中使用的列也是主键的一部分 则该视图是可更新的

  如果成员表在其自己的文件组中 则如果这些文件组中的文件分别位于不同的物理驱动器上 那么您会获得更佳的磁盘性能 这些表甚至也可以位于不同的数据库中 但是 在SQL Server 中 只要所有数据均在同一个数据库中 您就可以使用表分区 而表分区实现起来就容易得多了

  但是 假设您已经尽可能地利用了表分区或(本地)已分区视图 但性能仍然很低 如果您拥有SQL Server 或SQL Server 就可以利用分布式已分区视图了 主要差别在于 成员表可以位于不同的 SQL Server 实例上 而且这些实例可以安装在 N+ 群集上 为什么鼓励您这样做?如果已分区视图中的任何一个成员表转入离线状态 则整个视图也将转入离线状态 使这些成员成为群集的一部分可以为您提供支持性能和实现负载平衡所需的可靠性

  您真的需要群集吗?

  或许您有一些备用服务器无事可做 但这些服务器不在 Windows 目录的群集部分中 如果您在这些服务器可用的情况下 只是为了支持群集就必须出去购置新服务器 那么这是一种浪费可耻的行为

  数据库镜像可能是最适合替代群集的一种方法 镜像涉及到三个元素 存储镜像数据库的实例称为主体;备份服务器称为镜像;如果要实现自动故障转移 还需要第三台服务器 称为见证方 简而言之 主体上的数据库中的事务会在镜像中再次运行 当主体出现故障时 如果有见证方 数据库会自动故障转移到镜像 您必须为每个应用程序数据库设置镜像 但不能镜像系统数据库

  镜像是单独的SQL Server 实例 与群集不同的是 镜像可以位于几千英里以外 其高速缓存中填充的是由于从主体中复制事务而发生的更新活动 当然 还可以假设 除了从主体接收镜像事务之外 镜像上没有其他活动 既然 SQL Server 已经在镜像中运行 所以 故障转移的速度通常要比在群集中快 由于至少有部分高速缓存已准备好 所以 初始性能并不像在群集方案中那样低 另请注意 当镜像数据库发生故障转移时 主体和镜像会互换角色

  数据库镜像的不足之处是 需要的总磁盘容量是群集的两倍 如果您想在同步模式下运行且不想丢失任何数据 那么您还会需要更多的 CPU 处理能力 正如我所说的 要想实现高可用性 需要花费很高的成本

   组合方法

  由于镜像与主体之间的距离可以相当遥远 所以对于灾难恢复 (DR) 计划来说 选择镜像是非常明智的 群集是您的第一道防线 但是 如果您要同时利用群集和镜像 那会出现什么情况呢?在群集故障转移中 如果您的镜像配置中有见证方 则当群集 SQL Server 转入在线状态时 镜像会成为主体 但是 请注意 从新主体回到(群集的)新镜像的故障转移不是自动进行的 因此 当与群集结合使用时 最好不要对您的镜像数据库启用自动故障转移

  灾难恢复并不是您使用镜像的唯一原因;当您必须向主体应用服务包或修补程序时 镜像也是非常有用的 在这种情况下 您可以手动故障转移到镜像 在应用服务包或修补程序时 旧的主体服务器暂时处于离线状态 在新主体上发生的已提交事务会排队等候 等待被发送回新镜像(旧主体) 在完成服务包或修补程序的安装之后将会进行同步 最终 这两台服务器将完全处于同步状态 现在您便可以在主体和镜像之间转换角色了 故障转移与恢复只需要几秒钟的停机时间 您可以使用这种方法将 SQL Server 迁移到另一台计算机 只是不能实现故障恢复

  虚拟服务器添加灵活性

  虚拟化允许您在一台物理服务器上并行运行一个或多个操作系统 虚拟化软件为群集概念添加了另外一层功能 因为您可以将软件加入群集 因此 如果主机正在其上运行的服务器出现故障 则主机及其来宾 OS 会故障转移到备份节点 这可能是迁移来宾服务器的最简便方法 补充一点 来宾 OS 不必具有群集功能 因此 您可以在运行于某群集中的 Microsoft Virtual Server 之上的来宾 Windows Server 内部运行 SQL Server Workgroup Edition 实质上 您会间接拥有群集 Workgroup Edition

   在控制之下

  如果您在负责 SQL Server 实现 您需要确信您的服务器始终处于可用状态 服务器群集会帮助确保您的服务器始终可用 本文提供了一些来之不易的技巧 以帮助您入门 您可以在 群集资源 边栏中找到更多有用信息

lishixinzhi/Article/program/SQLServer/201311/22476

远程连接sql server服务器的方法

  如果需要远程连接sql server 服务器 应该用什么方法呢?下面就将教您远程连接sql server服务器的解决方案 供您参考

  一 看ping 服务器IP能否ping通

  这个实际上是看和远程sql server 服务器的物理连接是否存在 如果不行 请检查网络 查看配置 当然得确保远程sql server 服务器的IP拼写正确

  二 在Dos或命令行下输入telnet 服务器IP 端口 看能否连通

  如telnet

  通常端口值是 因为 是sql server 的对于Tcp/IP的默认侦听端口 如果有问题 通常这一步会出问题 通常的提示是“……无法打开连接 连接失败"

  如果这一步有问题 应该检查以下选项

   检查远程服务器是否启动了sql server 服务 如果没有 则启动

   检查服务器端有没启用Tcp/IP协议 因为远程连接(通过因特网)需要靠这个协议 检查方法是 在服务器上打开 开始菜单 》程序 》Microsoft SQL Server 》服务器网络实用工具 看启用的协议里是否有tcp/ip协议 如果没有 则启用它

   检查服务器的tcp/ip端口是否配置为 端口 仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性 确保默认端口为 并且隐藏服务器复选框没有勾上

  事实上 如果默认端口被修改 也是可以的 但是在客户端做telnet测试时 写服务器端口号时必须与服务器配置的端口号保持一致 如果隐藏服务器复选框被勾选 则意味着客户端无法通过枚举服务器来看到这台服务器 起到了保护的作用 但不影响连接 但是Tcp/ip协议的默认端口将被隐式修改为 在客户端连接时必须作相应的改变

   如果服务器端操作系统打过sp 补丁 则要对windows防火墙作一定的配置 要对它开放 端口 通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)

   检查服务器是否在 端口侦听 如果服务器没有在tcp连接的 端口侦听 则是连接不上的 检查方法是在服务器的dos或命令行下面输入

  netstat a n 或者是netstat an 在结果列表里看是否有类似 tcp listening 的项 如果没有 则通常需要给sql server 打上至少sp 的补丁 其实在服务器端启动查询分析器 输入 select @@version 执行后可以看到版本号 版本号在 以下的都需要打补丁

  如果以上都没问题 这时你再做telnet 服务器ip 测试 将会看到屏幕一闪之后光标在左上角不停闪动 恭喜你 你马上可以开始在企业管理器或查询分析器连接了

  三 检查客户端设置

  程序 》Microsoft SQL Server 》 客户端网络使用工具 像在服务器网络实用工具里一样 确保客户端tcp/ip协议启用 并且默认端口为 (或其他端口 与服务器端保持一致就行)

  四 在企业管理器里或查询那分析器连接测试

  企业管理器 》右键SQlserver组 》新建sqlserver注册 》下一步 》写入远程IP 》下一步 》选Sqlserver登陆 》下一步 》写入登陆名与密码(sa password) 》下一步 》下一步 》完成

  查询分析器 》文件 》连接 》写入远程IP 》写入登录名和密码(sa password) 》确定

  通常建议在查询分析器里做 因为默认情况下 通过企业管理器注册另外一台SQL Server的超时设置是 秒 而查询分析器是 秒

  修改默认连接超时的方法:

  企业管理器 》工具 》选项 》在弹出的"SQL Server企业管理器属性"窗口中 点击"高级"选项卡 》连接设置 》在 登录超时(秒) 后面的框里输入一个较大的数字

  查询分析器 》工具 》选项 》连接 》在 登录超时(秒) 后面的框里输入一个较大的数字

  通常就可以连通了 如果提示错误 则进入下一步

  五 错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式 因此用户无法使用SQL Server的登录帐户(如 sa )进行连接 解决方法如下所示:

   在服务器端使用企业管理器 并且选择"使用 Windows 身份验证"连接上 SQL Server

   展开"SQL Server组" 鼠标右键点击SQL Server服务器的名称 选择"属性" 再选择"安全性"选项卡

   在"身份验证"下 选择"SQL Server和 Windows "

   重新启动SQL Server服务 (在dos或命令行下面net stop mssqlserver停止服务 net start mssqlserver启动服务 也是一种快捷的方法)

lishixinzhi/Article/program/SQLServer/201311/22288

如果你还想了解更多这方面的信息,记得收藏关注本站。