社区
VB
帖子详情
sql中MSDTC是什么呀,为什么使用事务时提示msdtc不可用
dd922
2003-08-30 09:02:21
我在使用事务时提示我msdtc不可用,why。需要说明一点:使用一般的插入操作可以,但是我使用的是从excel中查出数据后插入到sql数据库,与这个由关系么
...全文
210
2
打赏
收藏
sql中MSDTC是什么呀,为什么使用事务时提示msdtc不可用
我在使用事务时提示我msdtc不可用,why。需要说明一点:使用一般的插入操作可以,但是我使用的是从excel中查出数据后插入到sql数据库,与这个由关系么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孟子E章
2003-08-30
打赏
举报
回复
http://www.588188.com/netbook/sqlserver2000/trblsql/tr_syserrors1a_20ah.htm
服务器 ''%1!'' 上的 MS DTC 不可用。
解释
处理显式或隐性事务内的 INSERT、UPDATE 或 DELETE 语句时会出现该错误。该错误通常表明 MSDTC 服务未在本地服务器上运行。显式或隐性事务中的数据修改语句要求运行 MSDTC 服务以及提供程序对分布式事务的支持。
对策
使用 SQL Server 服务管理器验证 MSDTC 服务是否已在服务器上启动。有关更多信息,请参见 Microsoft 分布式事务处理协调器文档。
孟子E章
2003-08-30
打赏
举报
回复
Microsoft Distributed Transaction Coordinator
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q294/2/09.asp&NoWebContent=1
服务器的
MSDTC
不
可用
解决办法
MSDTC
(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的
事务
。该服务的进程名为
Msdtc
.exe,该进程调用系统Microsoft Personal Web Server和Microsoft
SQL
Server。该服务用于管理多个服务器
Microsoft
SQL
Server 2005 Express Edition SP3
Microsoft
SQL
Server 2005 Express Edition
SQL
Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以
使用
提供的链接快速、直接地发送电子邮件反馈。请
使用
英语发送您的反馈信息。 若要通过邮件提交有关本文档的反馈信息,请单击此处:提交反馈。 目录 1.0 简介 2.0 下载并安装
SQL
Server Express 2.1 .NET Framework 2.0 2.2
SQL
Server Express 2.3
SQL
Server Express 的管理工具 2.4 访问安装文档 2.5
SQL
Server 2005 自述文件 3.0 安装问题 4.0 其他信息 4.1 服务帐户和网络协议 4.2 用户实例功能 4.3 WMI 提供程序和用户实例功能 4.4 联机丛书 4.5 获取
SQL
Server Express 帮助 4.6 新闻组支持 4.7 提供有关
SQL
Server Express 的反馈 5.0 数据库引擎 6.0 复制 [顶部] 1.0 简介 Microsoft
SQL
Server 2005 Express Edition (
SQL
Server Express) 是一个免费且易于
使用
的
SQL
Server 2005 版本,它替换了 Microsoft Desktop Engine (MSDE)。与 Microsoft Visual Studio 2005 集成之后,
SQL
Server Express 可以轻松的开发功能强大且安全的数据驱动应用程序,并允许快速部署这些应用程序。
SQL
Server Express 可以根据协议重新进行发布,并可作为客户端数据库以及基本服务器数据库
使用
。
SQL
Server Express 是独立软件供应商 (ISV)、服务器用户、非专业开发人员、Web 应用程序开发人员、网站宿主以及客户端应用程序编程爱好者的理想之选。 未及
时
包括在本自述文件
中
的任何有关
SQL
Server Express 的信息都将发布到 Microsoft 知识库文章 907284
中
。 有关
使用
SQL
Server Express 新闻组提供反馈的信息,请参阅 4.6 新闻组支持部分。 [顶部] 2.0 下载并安装
SQL
Server Express 本节介绍有关安装 .NET Framework 2.0、
SQL
Server Express 以及
可用
于连接到
SQL
Server Express 的工具的信息。 2.1 .NET Framework 2.0 在安装
SQL
Server Express 之前,必须安装 .NET Framework 2.0。
SQL
Server Express 依赖于特定 2.0 版本的 .NET Framework。如果您已安装了其他版本的 .NET Framework,则
SQL
Server Express 安装可能会在运行
时
发生意外情况。您可以从此 Microsoft 网站下载 .NET Framework 2.0。 注意: .NET Framework 2.0 由 Microsoft Visual Studio 2005 和所有版本的
SQL
Server 2005 自动安装。 [顶部] 2.2
SQL
Server Express
SQL
Server Express 可从此 Microsoft 网站下载获得。 注意: 下载和提取产品
时
,请务必按照下载站点提供的说明进行操作。 安装
SQL
Server Express 之后,请在命令
提示
符下
使用
以下命令连接到
SQL
Server Express:
sql
cmd -S Server\Instance 其
中
Server 是计算机名称,Instance 是要连接到的实例名称。如果已在安装过程
中
使用
了默认的命名实例,则将实例指定为“
SQL
Express”。 [顶部] 2.3 管理
SQL
Server Express 的工具 有关连接到
SQL
Server Express 数据库并进行管理的信息,请参阅 Microsoft 知识库文章 907716。 [顶部] 2.4 访问安装文档
SQL
Server Express 的安装要求文档
中
概述了硬件和软件要求。 [顶部] 2.5
SQL
Server 2005 自述文件
SQL
Server 2005 自述文件可以从此 Microsoft 网站在线获取。 注意: 未及
时
包括在本自述文件
中
的任何有关
SQL
Server 2005 和
SQL
Server Express 的信息都将发布到 Microsoft 知识库文章 907284
中
。 [顶部] 3.0 安装问题 本部分详细介绍此版本
中
的安装问题。 3.1 现有的
SQL
本机客户端安装可能导致安装失败 安装可能失败并回滚,同
时
显示以下错误消息:“找不到产品 Microsoft
SQL
本机客户端的安装包。请
使用
安装包
sql
ncli.msi 的有效副本重试安装。”若要解决此问题,请
使用
“添加或删除程序”卸载
SQL
本机客户端。对于群集,请从所有节点
中
卸载
SQL
本机客户端。然后,再次运行
SQL
Server 安装程序。 [顶部] 3.2 系统配置检查器失败并显示“性能监视器计数器检查失败”消息 在开始安装
SQL
Server 之前,系统配置检查器 (SCC) 会验证性能监视器计数器注册表项的值。如果 SCC 无法验证现有的注册表项,或者 SCC 无法运行 Lodctr.exe 系统程序,则 SCC 检查会失败,并且安装程序会被阻止。若要完成安装,您必须手动增加注册表项。 注意: 如果注册表编辑不当,则可能会导致严重的问题并可能需要您重新安装操作系统。Microsoft 不保证可以解决因注册表编辑不当而导致的问题。在编辑注册表之前,请备份所有重要数据。有关如何备份、恢复和编辑注册表的信息,请参阅 Microsoft 知识库文章 256986。 若要手动增加计数器注册表项,请执行下列操作: 在任务栏
中
,依次单击“开始”和“运行”,在“运行”文本框
中
键入 regedit.exe,再单击“确定”。 导航到以下注册表项:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]。查找下列项: "Last Counter"=dword:00000ed4 (5276) "Last Help"=dword:00000ed5 (5277) 验证值。上一步 (5276)
中
的 Last Counter 值必须与以下注册表项内 Perflib\009
中
Counter 项的最大值相等,上一步 (5277)
中
的 Last Help 值必须与以下注册表项内 Perflib\009
中
Help 项的最大值相等:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009]。 注意: “009”是用于英语(美国)的项。 如有必要,请修改 \Perflib 项
中
Last Counter 和 Last Help 的值。在右窗格
中
,右键单击 Last Counter 或 Last Help,选择“修改”,单击 Base = Decimal,在“值”数据字段
中
设置值,再单击“确定”。如有必要,请对其他项重复此操作,然后关闭注册表编辑器。 再次运行
SQL
Server 2005 Express Edition 安装程序。 [顶部] 3.3
SQL
Server Express 联机丛书
中
包含关于操作系统支持的错误信息。
SQL
Server Express 联机丛书
中
的“硬件和软件要求 (
SQL
Server Express)”主题
中
没有提供操作系统的精确列表。
SQL
Server Express 支持下列操作系统。 Windows Server 2003 SP1 Windows Server 2003 Enterprise Edition SP1 Windows Server 2003 Datacenter Edition SP1 Windows Small Business Server 2003 Standard Edition SP1 Windows Small Business Server 2003 Premium Edition SP1 Windows XP Professional SP2 Windows XP Home Edition SP2 Windows XP Tablet Edition SP2 Windows XP Media Edition SP2 Windows 2000 Professional Edition SP4 Windows 2000 Server Edition SP4 Windows 2000 Advanced Edition SP4 Windows 2000 Datacenter Server Edition SP4 [顶部] 3.4 如果在 Windows Server 2003
中
禁用了加密服务,则安装程序会失败并显示“Windows 徽标要求”对话框 Windows 加密服务提供程序 (CSP) 是执行身份验证、编码和加密服务的代码,基于 Windows 的应用程序通过 Windows Server 2003
中
的 CryptoAPI 访问这些服务。如果停止或禁用 CSP 服务,则
SQL
Server 安装程序会失败并显示“Windows 徽标要求”消息。 注意: 在 Windows Server 2003 故障转移群集
中
运行
SQL
Server 安装程序之前,必须在所有群集节点上启动 CSP 服务。 若要在 Windows Server 2003
中
启用 Windows CSP 服务,请执行下列操作: 在“控制面板”
中
,打开“管理工具”,再双击“服务”。 在“名称”列
中
,右键单击“加密服务”,再单击“启动”。 关闭“服务”。 运行安装程序。 [顶部] 3.5 未在 Windows
中
完全启用
MSDTC
由于未在 Windows
中
完全配置 Microsoft 分布式
事务
处理协调器 (MS DTC),因此,应用程序可能无法在分布式
事务
中
登记
SQL
Server Express 资源。此问题会影响
使用
分布式
事务
的链接服务器、分布式查询以及远程存储过程。为了避免出现此类问题,您必须在安装有
SQL
Server Express 的服务器
中
完全启用 MS DTC 服务。 若要完全启用 MS DTC,请执行下列操作: 在“控制面板”
中
,打开“管理工具”,再双击“组件服务”。 在左窗格的“控制台根目录”
中
,单击“组件服务”,再展开“计算机”。 右键单击“我的电脑”,再单击“属性”。 在
MSDTC
选项卡
中
,单击“安全配置”。 在“安全设置”下,选
中
所有复选框。 验证是否已将“DTC 登录帐户”名称设置为 NT AUTHORITY\NetworkService。 [顶部] 3.6 默认情况下不安装示例数据库 默认情况下,不在
SQL
Server Express
中
安装示例数据库。Northwind 和 pubs 示例数据库可以从 Microsoft 网站进行下载。Adventureworks 示例数据库可从此 Microsoft 网站安装。 [顶部] 3.7“强制加密”配置可能会导致
SQL
Server Express 安装程序失败 如果现有的
SQL
Server 客户端安装配置为启用了“强制加密”选项,则安装程序可能会失败。若要解决此问题,请在所有
SQL
Server 客户端上禁用此选项。对于
SQL
Server 2000
中
的 Microsoft 数据访问组件 (MDAC) 客户端,请
使用
SQL
Server 2000 客户端网络实用工具。对于
SQL
本机客户端,请
使用
“添加或删除程序”卸载
SQL
本机客户端。在群集
中
,请卸载所有节点
中
的
SQL
本机客户端。然后,再次运行
SQL
Server 2005 安装程序。 [顶部] 3.8 sp_configure 的设置可能会导致安装程序在升级系统数据库
时
失败 如果在更早 Community Technology Preview (CTP) 版本的
SQL
Server Express
中
禁用了 sp_configure 选项“SMO 和 DMO XP”,则在
使用
SAVESYSDB 卸载该早期实例,然后
使用
USESYSDB 安装本版本
时
,将可能无法从命令
提示
符下进行安装。若要解决此问题,请确保在
使用
安装程序升级系统数据库之前,已启用上述选项。有关详细信息,请参阅此 Microsoft 网站上
SQL
Server 联机丛书
中
的“设置服务器配置选项”。 [顶部] 3.9 安装
SQL
Server 2000 的默认实例可能会禁用
SQL
Server Express 如果您的计算机已安装
SQL
Server 2000 管理工具和
SQL
Server Express 的默认实例,则可以
使用
SQL
Server 安装程序安装
SQL
Server 2000 的默认实例。但是,这样做会禁用已安装的
SQL
Server Express 实例。因此,如果计算机上已安装
SQL
Server 2000 管理工具和
SQL
Server Express 的默认实例,则不要安装
SQL
Server 2000 的默认实例。 [顶部] 3.10 在 Windows 域控制器
中
安装
SQL
Server Express 安全说明: 我们不建议在域控制器
中
运行
SQL
Server Express。 可以在 Windows 域控制器
中
安装
SQL
Server Express;但是,
SQL
Server Express 无法在 Windows Server 2003 域控制器
中
像本地服务或网络服务那样运行。
SQL
Server 服务帐户应以 Windows 域用户帐户的身份运行。您也可安装
SQL
Server 服务帐户以本地系统的身份运行,但是不建议
使用
此选项。 不要在安装完
SQL
Server Express 之后更改服务器的角色。例如,如果您在成员服务器
中
安装了
SQL
Server Express,则不要
使用
Dcpromo 工具将该服务器提升为域控制器。或者,如果您在域控制器
中
安装了
SQL
Server Express,则不要
使用
Dcpromo 将该服务器降级为成员服务器。如果在安装完
SQL
Server Express 之后更改服务器的角色,便会导致功能丢失,不支持这样做。 [顶部] 3.11 现有的
SQL
本机客户端安装可能导致安装失败 安装可能失败并回滚,同
时
显示以下错误消息:“找不到产品 Microsoft
SQL
本机客户端的安装包。请
使用
安装包
sql
ncli.msi 的有效副本重试安装。”若要解决此问题,请
使用
“添加或删除程序”卸载
SQL
本机客户端。对于群集,请从所有节点
中
卸载
SQL
本机客户端。然后,再次运行
SQL
Server 安装程序。 [顶部] 3.12 卸载
SQL
Server Express 和 Visual Studio 2005 的预发布版本 安装前,您必须删除
SQL
Server Express、Visual Studio 2005 和 .NET Framework 2.0 的所有以前内部版本。由于这两个产品都依赖于相同版本的 .NET Framework,因此必须按照以下顺序卸载它们:
SQL
Server Express Visual Studio 2005 .NET Framework 2.0 [顶部] 3.13 维护模式下将
提示
输入 Setup.exe 的路径 如果在维护模式下安装新的
SQL
Server 2005 组件,系统将
提示
您指定
SQL
Server 2005 安装媒体
中
Setup.exe 文件的位置。指定该文件位置
时
,路径
中
一定要包含“Setup.exe”。例如,路径“D:\”将失败,而“D:\Setup.exe”将成功。 [顶部] 3.14 Setup 命令 Shell 脚本的故障排除失败 路径变量
中
包含括号
时
,Setup 命令 shell 脚本可以生成 Windows 脚本错误。出现该错误的原因是命令 shell 脚本不支持路径变量
中
包含的括号。在将 32 位组件安装到 64 位计算机的 Windows (WOW64) 32 位子系统
中
的 Windows
时
可能会出现该错误。例如,下列路径值为“C:\Program Files (x86)\”的脚本将生成一个错误,因为 shell 脚本解释器会将扩展的 PATH 变量
中
的括号错误地解释为 IF/ELSE 语句的一部分: IF "%SOME_PATH%" == "" ( SET PATH=%PATH%;%PATH_A% ) ELSE ( SET PATH=%PATH%;%PATH_B% ) 若要解决此问题,请更改该脚本以删除括号。例如: IF "%SOME_PATH%" == "" set PATH=%PATH%;%PATH_A% IF NOT "%SOME_PATH%" == "" set PATH=%PATH%;%PATH_B% 或者从路径
中
删除包含括号的
SQL
项。 [顶部] 4.0 其他信息 4.1 服务帐户和网络协议 在
SQL
Server Express
中
,本地系统帐户即为网络服务帐户。
SQL
Server Express 可侦听本地命名管道和共享内存。执行默认安装
时
,无法远程连接到
SQL
Server Express。您需要启用 TCP/IP 并检查是否已启用防火墙。 若要启用 TCP/IP,请执行下列操作: 在“开始”菜单
中
,选择“所有程序”,依次指向 Microsoft
SQL
Server 2005 和“配置工具”,再单击“
SQL
Server 配置管理器”。 或者,您可以通过右键单击“我的电脑”并选择“管理”来打开计算机管理器。在“计算机管理”
中
,依次展开“服务和应用程序”和“
SQL
Server 配置管理器”。 展开“
SQL
Server 2005 网络配置”,再单击“InstanceName 的协议”。 在协议列表
中
,右键单击要启用的协议,再单击“启用”。 协议的图标将更改为显示该协议已启用。 若要启用防火墙,请执行下列操作: 依次单击“开始”和“控制面板”,再单击“网络连接”。 在左侧的导航栏
中
,单击“更改 Windows 防火墙的设置”。 在“异常”选项卡的“程序和服务”框
中
,您可能看到已列出
SQL
Server,但未将其选择为异常。如果您选
中
该复选框,则 Windows 将打开端口 1433 以允许 TCP 请求进入。或者,如果您未看到列出
SQL
Server,则请执行下列操作: 单击“添加程序”。 单击“浏览”。 导航到 drive:\Program Files\Microsoft
SQL
Server\MS
SQL
.1\MS
SQL
\BINN 将文件
sql
servr.exe 添加到异常列表
中
。 [顶部] 4.2 用户实例功能
SQL
Server Express 允许非管理员用户在没有 DBCreator 特权的情况下也能复制或移动数据库(
使用
Xcopy 部署)。有关详细信息,请参阅此 Microsoft 网站上的
SQL
Server Express 联机丛书
中
的“非管理员用户实例”。 [顶部] 4.3 WMI 提供程序和用户实例功能 动态生成的用户实例
中
不支持 WMI Provider for Server Events。此程序仍运行于父
SQL
Server Express 实例
中
。 [顶部] 4.4 联机丛书
SQL
Server Express 联机丛书可从此 Microsoft 网站下载获得。 注意: 由于
SQL
Server Express 是
SQL
Server 2005 的一个受限版本,因此,
SQL
Server Express 联机丛书
中
的文档很大程度上依赖于
SQL
Server 2005 联机丛书
中
的内容。
SQL
Server 2005 联机丛书可从此 Microsoft 网站下载获得。 Microsoft 定期发布
SQL
Server Express 联机丛书和
SQL
Server 2005 联机丛书的可下载更新。我们建议您安装这些更新以及
时
更新该文档的本地副本
中
相应的信息。 [顶部] 4.5 获取
SQL
Server Express 帮助 Microsoft 通过以下四个主要信息来源提供有关
SQL
Server Express 的信息:
SQL
Server Express 文档和示例
SQL
Server 2005 文档 Microsoft Developer Network (MSDN) 和 TechNet 上的
SQL
Server 站点 其他 Microsoft 网站上的
SQL
Server 信息 您也可以通过
SQL
Server 社区从其他人或直接从 Microsoft 支持人员处获取帮助。有关详细信息,请参阅
SQL
Server Express 联机丛书
中
的“获取
SQL
Server Express 帮助”。 [顶部] 4.6 新闻组支持 有关新闻组支持的信息,请从此 Microsoft 网站访问
SQL
Server Express 新闻组。请不要
使用
其他 Microsoft 新闻组张贴有关
SQL
Server Express 的问题。 可在
SQL
Server Express 网站日志
中
找到来自
SQL
Server Express 小组的最新信息。 注意: 仅支持英语版的新闻组。 [顶部] 4.7 提供有关
SQL
Server Express 的反馈 可通过下列方式提供有关
SQL
Server Express 的建议和错误报告: 在此 Microsoft 网站发送有关
SQL
Server Express 的功能和用户界面的建议和错误报告。
使用
SQL
Server Express 联机丛书
中
的反馈功能发送有关文档的建议以及报告其
中
不正确的内容。 选择自动将错误报告和功能
使用
情况数据发送给 Microsoft 进行分析。 有关详细信息,请参阅
SQL
Server 联机丛书
中
的“提供有关
SQL
Server 2005 的反馈”。 [顶部] 5.0 数据库引擎 本部分说明
SQL
Server 2005 数据库引擎和数据库引擎特定的命令
提示
实用工具的最新项,这些最新项也应用于
SQL
Server Express。 [顶部] 5.1 在 Windows Server 2003 SP1
中
运行
时
连接可能会被强行关闭 如果 TCP/IP 网络处于打开状态,则指向 Windows Server 2003 Service Pack 1
中
运行的
SQL
Server Express 数据库引擎实例的客户端连接可能会失败,并出现以下错误:“提供程序号: 7,错误: 10054,错误消息:‘TCP 提供程序: 现有连接被远程主机强行关闭’”。 如果要通过大量客户端连接尝试来测试可伸缩性,则可能会出现此错误。若要解决此问题,请
使用
regedit.exe 实用工具将名为 SynAttackProtect 的新 DWORD 值添加到注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\(值数据为 00000000)
中
。 安全说明: 设置此注册表项可能会使服务器受到 SYN Flood 拒绝服务攻击。测试完成
时
,请删除该注册表值。 注意: 如果注册表编辑不当,可能会导致严重问题并可能需要重新安装操作系统。Microsoft 不保证可以解决因注册表编辑不当而导致的问题。在编辑注册表之前,请备份所有重要数据。有关如何备份、恢复和编辑注册表的信息,请参阅 Microsoft 知识库文章 256986。 [顶部] 5.2 安全的 Service Broker 对话需要数据库主密钥
SQL
Server 2005 联机丛书错误地说明了当跨数据库
使用
对话安全设置进行会话
时
,
SQL
Server 会创建通过数据库主密钥加密的会话密钥。实际上,对于所有
使用
对话安全设置进行的会话而言,会话密钥均通过数据库主密钥进行加密。如果数据库主密钥不
可用
,则在创建数据库主密钥或会话超
时
之前,会话的消息将一直保留在 transmission_queue
中
并出现错误。您可以
使用
ENCRYPTION = OFF 参数创建未加密的对话,也可以
使用
以下命令创建数据库主密钥: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '' [顶部] 5.3 公共语言运行
时
用户定义类型应只有一个序列化 每个字节顺序的用户定义类型 (UDT) 对象的实例只能有一种序列化表示形式。如果序列化或反序列化例程识别出某个特定对象具有多种表示形式,则可能会在下列情况下出现错误: 在验证通过 RPC 传递的字节顺序的 UDT 期间,UDT 验证执行 UDT 的反序列化/重新序列化,并要求生成的字节与原始字节完全相同。如果验证失败,则会出现错误:“System.Data.
Sql
Client.
Sql
Exception,传入的 TDS RPC 协议流不正确。参数 1 (""):提供的值不是数据类型 的有效实例。请检查源数据
中
的无效值。” 在 DBCC 期间,字节顺序的 UDT 列
中
存储的字节数必须等于计算的 UDT 值序列化。如果不相等,则 DBCC CHECKTABLE 例程将会报告一致性错误。 [顶部] 5.4 尚未通过设置启用网络连接 为了提高安全性,
SQL
Server Express 针对某些新安装禁用了网络连接。如果您
使用
的是
SQL
Server Enterprise Edition、Standard Edition 或 Workgroup Edition,或计算机上已经安装有
SQL
Server,则不会禁用
使用
TCP/IP 协议的网络连接。除非计算机上已经安装有
SQL
Server,否则 Named Pipes 连接仅适用于本地连接。对于所有安装,都会启用 Shared Memory 协议,以允许服务器的本地连接。根据具体的安装条件和安装选项,可能会停止
SQL
Browser 服务。 [顶部] 5.5 包含用户定义类型的程序集注意事项 下列限制适用于包含用户定义类型的公共语言运行
时
(CLR) 程序集。 公共语言运行
时
用户定义类型只能有一个序列化 字节顺序的用户定义类型对象的各个实例只能有一种序列化表示形式。如果序列化或反序列化例程检测到某个特定对象具有多种表示形式,则在以下情况下可能会显示错误: 在验证通过 RPC 传递的字节顺序的用户定义类型的过程
中
,用户定义类型验证过程会对该用户定义类型执行反序列化/重新序列化,并要求生成的字节与原始字节完全相同。如果验证失败,您将看到以下错误:“System.Data.
Sql
Client.
Sql
Exception,传入的 TDS RPC 协议流不正确。参数 1 (""): 提供的值不是数据类型 的有效实例。请检查源数据
中
的无效值。” 在 DBCC CHECKTABLE 过程
中
,在字节顺序的用户定义类型列
中
存储的字节必须与计算出的 UDT 值的序列化表示形式相同。如果不相同,则 DBCC CHECKTABLE 例程将报告一个一致性错误。 有关更新带有用户定义类型类的程序集的已更新的限制 可以按下列方式
使用
ALTER ASSEMBLY 更新 CLR 用户定义类型: 修改用户定义类型类的公共方法,但不更改签名或属性。 添加新的公共方法。 以任何方式修改私有方法。
使用
ALTER ASSEMBLY 不能更改本机序列化的用户定义类型
中
包含的字段,包括数据成员和基类。不支持所有其他更改。 [顶部] 5.6
SQL
Server 不保证更新程序集
时
的数据一致性 如未指定 WITH UNCHECKED DATA,则在新的程序集版本对表、索引或其他持久站点
中
的现有数据产生影响
时
,
SQL
Server 将会阻止执行 ALTER ASSEMBLY。更新公共语言运行
时
(CLR) 程序集
时
,
SQL
Server 并不保证计算列、索引、索引视图或表达式与基础例程和类型保持一致。执行 ALTER ASSEMBLY
时
需谨慎操作,以确保在表达式结果和基于存储在程序集
中
的该表达式的值之间没有不匹配。 [顶部] 5.7 卷影复制服务的快照自动恢复功能的注意事项 卷影复制服务 (VSS) 的快照自动恢复功能具有下列限制。 多个持续自动恢复的快照 在 Windows Server 2003 Service Pack 1 (SP1) 和更高版本
中
,您只能创建单个持续自动恢复的快照。若要创建其他快照,您必须首先应用知识库文章 891957
中
所述的更新。 注意: 如果尚未应用此更新,则可以通过以下方式创建新的持续自动恢复的快照:首先删除现有的持续自动恢复的快照,然后创建一个新的持续自动恢复的快照。 自动恢复的快照和全文目录 快照自动恢复功能不支持全文目录。创建自动恢复的快照之后,在该快照
中
,数据库
中
的所有全文目录都将处于脱机状态。在从快照
中
附加数据库
时
,全文目录会永久保持脱机状态。但附加的数据库
中
的其他所有数据均
可用
。 在从自动恢复的快照
中
直接附加包含全文目录的数据库
时
,附加操作将返回以下错误消息: Server: Msg 7608, Level 17, State 1, Line 1 An unknown full-text failure (0xc000000d) occurred during "Mounting a full-text catalog". 如果不需要直接从快照
中
附加数据库,则可以通过如下方式来避免此问题:先将快照
中
的数据库文件和全文目录复制到基于驱动器号的常规卷
中
,然后从该位置附加数据库。只要附加命令指定了所复制的全文文件的正确位置,即可正常
使用
这些全文目录。 [顶部] 5.8 注册公共语言运行
时
程序集的限制
SQL
Server 不允许
使用
相同的名称、区域性和公钥注册程序集的不同版本。如果计划保留九月份 CTP 版本之前的
SQL
Server Express 版本
中
的数据库,则在安装该版本之前,必须删除具有多个注册的程序集的所有其他实例,只保留一个实例。 [顶部] 5.9 创建 EXTERNAL_ACCESS 和 UNSAFE 程序集 若要在
SQL
Server
中
创建 EXTERNAL_ACCESS 或 UNSAFE 程序集或者要加载程序集,必须满足下列两个条件之一: 程序集经过强名称签名或
使用
证书进行了 authenticode 签名。此强名称(或证书)在
SQL
Server
中
作为非对称密钥(或证书)创建,并具有相应的登录名,该登录名具有 EXTERNAL ACCESS ASSEMBLY 权限(对于 EXTERNAL ACCESS 程序集)或 UNSAFE ASSEMBLY 权限(对于 UNSAFE 程序集)。 数据库所有者 (DBO) 具有 EXTERNAL ACCESS ASSEMBLY(对于 EXTERNAL ACCESS 程序集)或 UNSAFE ASSEMBLY(对于 UNSAFE 程序集)权限,并且该数据库的 TRUSTWORTHY 属性设置为 ON。 除了要在服务器进程
中
运行公共语言运行
时
(CLR) 代码之外,建议始终将数据库的 TRUSTWORTHY 属性设置为 ON。并且建议通过 master 数据库
中
的程序集文件创建非对称密钥。然后,必须创建映射到此非对称密钥的登录名,并且为该登录名授予 EXTERNAL ACCESS ASSEMBLY 或 UNSAFE ASSEMBLY 权限。 下面的 Transact-
SQL
语句将执行完成下列操作所需的步骤:创建非对称密钥,将一个登录名映射到此密钥,然后为该登录名授予 EXTERNAL_ACCESS ASSEMBLY 权限。必须在执行 CREATE ASSEMBLY 语句之前执行下面的 Transact-
SQL
语句: USE master GO CREATE ASYMMETRIC KEY HelloWorldKey FROM EXECUTABLE FILE = 'C:\HelloWorld.dll' CREATE LOGIN HelloWorldLogin FROM ASYMMETRIC KEY HelloWorldKey GRANT EXTERNAL ACCESS ASSEMBLY TO HelloWorldLogin GO [顶部] 5.10 应用程序角色与元数据可见性限制以及动态管理视图的兼容性 在某个应用程序角色下运行的程序的行为可能会发生更改,因为在默认情况下,
SQL
Server Express 将限制 master 数据库元数据对于应用程序角色的可见性。作为临
时
解决方法,您可以启用跟踪标志 #4616。有关详细信息,请参阅知识库文章 906549。 [顶部] 5.11 未实现 SUPPLEMENTAL_LOGGING 数据库选项 在此版本的
SQL
Server
中
未实现 SUPPLEMENTAL_LOGGING 数据库选项。此选项可以设置,但不起任何作用。 [顶部] 5.12 sys.dm_clr_loaded_assemblies 显示无法加载的程序集 由于任何原因未能加载到服务器地址空间
中
的程序集仍将显示在 sys.dm_clr_loaded_assemblies 动态管理视图
中
。 [顶部] 5.13 XQuery 更改 联机丛书
中
未说明
SQL
Server Express XQuery 实现的以下几个方面: 没有将 CDATA 部分生成的字符视为空格字符。例如,select cast(''as xml).query(' <![CDATA[ ]]> {"abc"}') 返回 abc。 支持构造空元素和空属性。 命名空间前缀 xmlns 用于标识命名空间声明属性,不能在 XQuery 表达式
中
重新声明。这是 XQuery 规范要求的行为。 将“for”与源表达式 () 一起
使用
会生成一个静态的错误。 在
使用
xml 数据类型的 query() 方法构造的 XML 文档
中
,CDATA 部分
中
的回车符变为换行符。为了进行文本 XML 分析,
使用
换行符代替之前的回车符实体引用 ( )。 包含 local-name() 和 namespace-uri() 的 Transact-
SQL
用户定义函数为确定性函数。 [顶部] 5.14 xsd:dateTime 转换的限制比所述限制更少 不包含日期和
时
间分隔符 T 或
时
区的 xs:dateTime 值的字符串表示可以在 value() 方法
中
转换为
SQL
datetime 类型,如以下示例所示: declare @aaa xml set @aaa = '' select @aaa.value('(//AAA)[1]/@MyDate', 'datetime') [顶部] 5.15 XML 架构支持
SQL
Server 2005 联机丛书
中
未说明
SQL
Server 2005 对 XML 架构以下几个方面的支持: 可以将 Reporting Services (RDL) 的 XML 架构加载到 XML 架构集合
中
。 如果 xs:dateTime 和 xs:time 类型的值包含具有三个以上小数位数的副值,则这些值不会返回错误,而是会被进行舍入。 当基类型具有 fixed="true"
时
,如果在派生类型
中
重新定义 maxInclusive,便会拒绝
使用
XML 架构。 限制 xs:dateTime、xs:data 和 xs:time 等数据类型的派生类型将忽略 minInclusive、minExclusive、maxInclusive 和 maxExclusive 部分的尾随空格。 [顶部] 5.16 不应
使用
RC4 加密 请勿
使用
RC4 加密保护
SQL
Server 2005
中
的数据,而改为
使用
分组密码,如 AES 256 或 Triple DES。 [顶部] 6.0 复制 本部分介绍了有关复制的最新信息。 [顶部] 默认情况下禁用复制功能 Microsoft
SQL
Server 2005 Express Edition 可以用作所有复制类型的订阅服务器,但是默认情况下不会为此版本安装复制功能。 若要安装复制组件,请执行下列操作: 在“功能选择”页
中
,展开“数据库服务”。 单击“复制”,再单击“整个功能将被安装在本地硬盘上”。 若要安装连接组件和复制管理对象 (RMO),请执行下列操作: 在“功能选择”页
中
,单击“客户端组件”,再单击“整个功能将被安装在本地硬盘上”。 [顶部] © 2005 Microsoft Corporation。保留所有权利。
经典
SQL
语句大全
一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份
sql
server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\ms
sql
7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (
使用
旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2
中
列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的
sql
语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表
中
任何重复行而派生出一个结果表。当 ALL 随 UNION 一起
使用
时
(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1
中
但不在 TABLE2
中
的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起
使用
时
(EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2
中
都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起
使用
时
(INTERSECT ALL),不消除重复行。 注:
使用
运算词的几个查询结果行必须是一致的。 12、说明:
使用
外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL
: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表
中
的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准) 在
SQL
Server
中
分组
时
:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数
中
的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名 14.如何修改数据库的名称: sp_renamedb 'old_name', 'new_name' 二、提升 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access
可用
) 法一:select * into b from a where 11(仅用于
SQl
Server) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access
可用
) insert into b(a, b, c) select d,e,f from b; 3、说明:跨数据库之间表的拷贝(具体数据
使用
绝对路径) (Access
可用
) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3) 5、说明:显示文章、提交人和最后回复
时
间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b 6、说明:外连接查询(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7、说明:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1; 8、说明:between的用法,between限制查询数据范围
时
包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2 9、说明:in 的
使用
方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) 10、说明:两张关联表,删除主表
中
已经在副表
中
没有的信息 delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 ) 11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒
SQL
: select * from 日程安排 where datediff('minute',f开始
时
间,getdate())>5 13、说明:一条
sql
语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页: declare @start int,@end int @
sql
nvarchar(600) set @
sql
=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’ exec sp_execute
sql
@
sql
注意:在top后不能直接跟一个变量,所以在实际应用
中
只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表
中
的不一致(逻辑索引
中
的数据有可能和数据表
中
的不一致,而查询
时
如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table1 where 范围 15、说明:选择在每一组b值相同的数据
中
对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b) 16、说明:包括所有在 TableA
中
但不在 TableB和TableC
中
的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC) 17、说明:随机取出10条数据 select top 10 * from tablename order by newid() 18、说明:随机选择记录 select newid() 19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into tablename select * from temp 评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作 3),例如:在一个外部表
中
导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add column_b int identity(1,1) delete from tablename where column_b not in( select max(column_b) from tablename group by column1,column2,...) alter table tablename drop column column_b 20、说明:列出数据库里所有的表名 select name from sysobjects where type='U' // U代表用户 21、说明:列出表里的所有的列名 select name from syscolumns where id=object_id('TableName') 22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select
中
的case。 select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type 显示结果: type vender pcs 电脑 A 1 电脑 A 1 光盘 B 2 光盘 A 2 手机 B 3 手机 C 3 23、说明:初始化表table1 TRUNCATE TABLE table1 24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc 三、技巧 1、1=1,1=2的
使用
,在
SQL
语句组合
时
用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @str
SQL
= 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @str
SQL
= 'select count(*) as Total from [' + @tblName + ']' end 我们可以直接写成 错误!未找到目录项。 set @str
SQL
= 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收缩数据库 --重建索引 DBCC REINDEX DBCC INDEXDEFRAG --收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE 3、压缩数据库 dbcc shrinkdatabase(dbname) 4、转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5、检查备份集 RESTORE VERIFYONLY from disk='E:\dvbbs.bak' 6、修复数据库 ALTER DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO ALTER DATABASE [dvbbs] SET MULTI_USER GO 7、日志清除 SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的数据库名 SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M) Setup / initialize DECLARE @OriginalSize int SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName CREATE TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. SELECT @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans SELECT @Counter = @Counter + 1 END EXEC (@TruncLog) END SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName DROP TABLE DummyTrans SET NOCOUNT OFF 8、说明:更改某个表 exec sp_changeobjectowner 'tablename','dbo' 9、存储更改全部表 CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwner as NVARCHAR(128), @NewOwner as NVARCHAR(128) AS DECLARE @Name as NVARCHAR(128) DECLARE @Owner as NVARCHAR(128) DECLARE @OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select 'Name' = name, 'Owner' = user_name(uid) from sysobjects where user_name(uid)=@OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO @Name, @Owner WHILE(@@FETCH_STATUS=0) BEGIN if @Owner=@OldOwner begin set @OwnerName = @OldOwner + '.' + rtrim(@Name) exec sp_changeobjectowner @OwnerName, @NewOwner end -- select @name,@NewOwner,@OldOwner FETCH NEXT FROM curObject INTO @Name, @Owner END close curObject deallocate curObject GO 10、
SQL
SERVER
中
直接循环写入数据 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end 案例: 有如下表,要求就裱
中
所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格: Name score Zhangshan 80 Lishi 59 Wangwu 50 Songquan 69 while((select min(score) from tb_table)<60) begin update tb_table set score =score*1.01 where score60 break else continue end 数据开发-经典 1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多 2.数据库加密: select encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 3.取回表
中
字段: declare @list varchar(1000), @
sql
nvarchar(1000) select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A' set @
sql
='select '+right(@list,len(@list)-1)+' from 表A' exec (@
sql
) 4.查看硬盘分区: EXEC master..xp_fixeddrives 5.比较A,B表是否相等: if (select checksum_agg(binary_checksum(*)) from A) = (select checksum_agg(binary_checksum(*)) from B) print '相等' else print '不相等' 6.杀掉所有的事件探察器进程: DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses WHERE program_name IN('
SQL
profiler',N'
SQL
事件探查器') EXEC sp_msforeach_worker '?' 7.记录搜索: 开头到N条记录 Select Top N * From 表 ------------------------------- N到M条记录(要有主索引ID) Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc ---------------------------------- N到结尾记录 Select Top N * From 表 Order by ID Desc 案例 例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个
SQL
语句, 找出表的第31到第40个记录。 select top 10 recid from A where recid not in(select top 30 recid from A) 分析:如果这样写会产生某些问题,如果recid在表
中
存在逻辑索引。 select top 10 recid from A where……是从索引
中
查找,而后面的select top 30 recid from A则在数据表
中
查找,这样由于索引
中
的顺序有可能和数据表
中
的不一致,这样就导致查询到的不是本来的欲得到的数据。 解决方案 1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题 2, 在那个子查询
中
也加条件:select top 30 recid from A where recid>-1 例2:查询表
中
的最后以条记录,并不知道这个表共有多少数据,以及表结构。 set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)' print @s exec sp_execute
sql
@s 9:获取当前数据库
中
的所有用户表 select Name from sysobjects where xtype='u' and status>=0 10:获取某一个表的所有字段 select name from syscolumns where id=object_id('表名') select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名') 两种方式的效果相同 11:查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 12:查看当前数据库
中
所有存储过程 select name as 存储过程名称 from sysobjects where xtype='P' 13:查询用户创建的所有数据库 select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa') 或者 select dbid, name AS DB_NAME from master..sysdatabases where sid 0x01 14:查询某一个表的字段和数据类型 select column_name,data_type from information_schema.columns where table_name = '表名' 15:不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', '
SQL
OLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再
使用
时
删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( '
SQL
OLEDB ', '
sql
服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 select * into 表 from openrowset( '
SQL
OLEDB ', '
sql
服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 insert openrowset( '
SQL
OLEDB ', '
sql
服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) select *from 本地表 --更新本地表 update b set b.列A=a.列A from openrowset( '
SQL
OLEDB ', '
sql
服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', '
SQL
OLEDB ', '远程服务器名或ip地址 ' --查询 select * FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') --把本地表导入远程表 insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT * FROM opendatasource( '
SQL
OLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta --把本地表导入远程表 insert opendatasource( '
SQL
OLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 select * from 本地表
SQL
Server基本函数
SQL
Server基本函数 1.字符串函数 长度与分析用 1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用
中
以len(expression)取得其长度 3,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反 4,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类 5,Sp_addtype 自定義數據類型 例如:EXEC sp_addtype birthday, datetime, 'NULL' 6,set nocount {on|off} 使返回的结果
中
不包含有关受 Transact-
SQL
语句影响的行数的信息。如果存储过程
中
包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行
时
设置,而不是在分析
时
设置。 SET NOCOUNT 为 ON
时
,不返回计数(表示受 Transact-
SQL
语句影响的行数)。 SET NOCOUNT 为 OFF
时
,返回计数 常识 在
SQL
查询
中
:from后最多可以跟多少张表或视图:256 在
SQL
语句
中
出现 Order by,查询
时
,先排序,后取 在
SQL
中
,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。
SQL
Server2000同步复制技术实现步骤 一、 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算机管理 --用户和组 --右键用户 --新建用户 --建立一个隶属于administrator组的登陆windows的用户(SynUser) 2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作: 我的电脑--D:\ 新建一个目录,名为: PUB --右键这个新建的目录 --属性--共享 --选择"共享该文件夹" --通过"权限"按纽来设置具体的用户权限,保证第一步
中
创建的用户(SynUser) 具有对该文件夹的所有权限 --确定 3.设置
SQL
代理(
SQL
SERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置) 开始--程序--管理工具--服务 --右键
SQL
SERVERAGENT --属性--登陆--选择"此账户" --输入或者选择第一步
中
创建的windows登录用户名(SynUser) --"密码"
中
输入该用户的密码 4.设置
SQL
Server身份验证模式,解决连接
时
的权限问题(发布/订阅服务器均做此设置) 企业管理器 --右键
SQL
实例--属性 --安全性--身份验证 --选择"
SQL
Server 和 Windows" --确定 5.在发布服务器和订阅服务器上互相注册 企业管理器 --右键
SQL
Server组 --新建
SQL
Server注册... --下一步--
可用
的服务器
中
,输入你要注册的远程服务器名 --添加 --下一步--连接
使用
,选择第二个"
SQL
Server身份验证" --下一步--输入用户名和密码(SynUser) --下一步--选择
SQL
Server组,也可以创建一个新组 --下一步--完成 6.对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施
中
没用到) (在连接端配置,比如,在订阅服务器上配置的话,服务器名称
中
输入的是发布服务器的IP) 开始--程序--Microsoft
SQL
Server--客户端网络实用工具 --别名--添加 --网络库选择"tcp/ip"--服务器别名输入
SQL
服务器名 --连接参数--服务器名称
中
输入
SQL
服务器ip地址 --如果你修改了
SQL
的端口,取消选择"动态决定端口",并输入对应的端口号 二、 正式配置 1、配置发布服务器 打开企业管理器,在发布服务器(B、C、D)上执行以下步骤: (1) 从[工具]下拉菜单的[复制]子菜单
中
选择[配置发布、订阅服务器和分发]出现配置发布和分发向导 (2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他
sql
的服务器(选择自己) (3) [下一步] 设置快照文件夹 采用默认\\servername\Pub (4) [下一步] 自定义配置 可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置 否,
使用
下列默认设置(推荐) (5) [下一步] 设置分发数据库名称和位置 采用默认值 (6) [下一步] 启用发布服务器 选择作为发布的服务器 (7) [下一步] 选择需要发布的数据库和发布类型 (8) [下一步] 选择注册订阅服务器 (9) [下一步] 完成配置 2、创建出版物 发布服务器B、C、D上 (1)从[工具]菜单的[复制]子菜单
中
选择[创建和管理发布]命令 (2)选择要创建出版物的数据库,然后单击[创建发布] (3)在[创建发布向导]的
提示
对话框
中
单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) (4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQL
SERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制。 但是在这里我们选择运行"
SQL
SERVER 2000"的数据库服务器 (5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表 注意: 如果前面选择了
事务
发布 则再这一步
中
只能选择带有主键的表 (6)选择发布名称和描述 (7)自定义发布属性 向导提供的选择: 是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性 否 根据指定方式创建发布 (建议采用自定义的方式) (8)[下一步] 选择筛选发布的方式 (9)[下一步] 可以选择是否允许匿名订阅 1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器 方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器]
中
添加 否则在订阅服务器上请求订阅
时
会出现的
提示
:改发布不允许匿名订阅 如果仍然需要匿名订阅则用以下解决办法 [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅 2)如果选择匿名订阅,则配置订阅服务器
时
不会出现以上
提示
(10)[下一步] 设置快照 代理程序调度 (11)[下一步] 完成配置 当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库 有数据 srv1.库名..author有字段:id,name,phone, srv2.库名..author有字段:id,name,telphone,adress 要求: srv1.库名..author增加记录则srv1.库名..author记录增加 srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新 --*/ --大致的处理步骤 --1.在 srv1 上创建连接服务器,以便在 srv1
中
操作 srv2,实现同步 exec sp_addlinkedserver 'srv2','','
SQL
OLEDB','srv2的
sql
实例名或ip' exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码' go --2.在 srv1 和 srv2 这两台电脑
中
,启动
msdtc
(分布式
事务
处理服务),并且设置为自动启动 。我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 go --然后创建一个作业定
时
调用上面的同步处理存储过程就行了 企业管理器 --管理 --
SQL
Server代理 --右键作业 --新建作业 --"常规"项
中
输入作业名称 --"步骤"项 --新建 --"步骤名"
中
输入步骤名 --"类型"
中
选择"Transact-
SQL
脚本(T
SQL
)" --"数据库"选择执行命令的数据库 --"命令"
中
输入要执行的语句: exec p_process --确定 --"调度"项 --新建调度 --"名称"
中
输入调度名称 --"调度类型"
中
选择你的作业执行安排 --如果选择"反复出现" --点"更改"来设置你的
时
间安排 然后将
SQL
Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键
SQL
SERVERAGENT--属性--启动类型--选择"自动启动"--确定. --3.实现同步处理的方法2,定
时
同步 --在srv1
中
创建如下的同步处理存储过程 create proc p_process as --更新修改过的数据 update b set name=i.name,telphone=i.telphone from srv2.库名.dbo.author b,author i where b.id=i.id and (b.name i.name or b.telphone i.telphone) --插入新增的数据 insert srv2.库名.dbo.author(id,name,telphone) select id,name,telphone from author i where not exists( select * from srv2.库名.dbo.author where id=i.id) --删除已经删除的数据(如果需要的话) delete b from srv2.库名.dbo.author b where not exists( select * from author where id=b.id) go
sql
server 集群配置
分类:
SQL
Server Windows server2003 +
sql
server2005 集群配置安装 一:环境 软硬件环境 虚拟3台windows server 2003主机。其
中
一台做域控DC,另外两台作为节点win1 win2. 域控DC网络设置: Hostname Private网卡 Public网卡 adtest 192.168.9.176 节点主机网络设置 Hostname Private网卡 Public网卡 Win1 10.0.0.173 192.168.9.173 Win2 10.0.0.174 192.168.9.174 二:建域test.com 在域控主机192.168.9.176上安装域 1 设置DC的ip 192.168.9.176 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739037lWe2.png" \* MERGEFORMATINET 2 在DC
中
使用
DCPROMO命令创建域 (后面的步骤
中
需要更新windows组件,必须先挂载安装盘) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077391708Ti6.jpg" \* MERGEFORMATINET 3 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739247Oq09.jpg" \* MERGEFORMATINET 4 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739274XN5X.jpg" \* MERGEFORMATINET 5 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077393012nbo.png" \* MERGEFORMATINET 6 选择新林
中
的域 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739354rKwn.png" \* MERGEFORMATINET 7 填入所要创建域的完整的域名 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739377CMKf.png" \* MERGEFORMATINET 8 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739509vRI0.png" \* MERGEFORMATINET 9 选择AD数据库和日志文件的存放位置 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739565AxuX.png" \* MERGEFORMATINET 10 存放SYSVOL的存放位置(注意:一定要放在NTFS的分区
中
) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739603KBsU.png" \* MERGEFORMATINET 11 注意:AD是离不开DNS服务的,因为客户机加入域和登录域都需要把域名解析为IP地址,因为此
时
DC没有DNS服务器,所以选择第二项让系统在创建DC的同
时
把DNS服务随之一起安装上.当然你也可以安装DC后自己手动再安装和配置DNS服务器(当
时
是您给会正确配置DNS服务器),建议和DC一起让系统帮我们创建,因为省事 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739851kpky.png" \* MERGEFORMATINET 12 选择兼容的模式,为了以后可以方便windows2000和2003兼容 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739883TU02.jpg" \* MERGEFORMATINET 13 设置AD的还原密码(为了以后对AD数据库做完备份,开机按F8进入AD还原模式需要的还原密码,如果在此设置了密码,一定切记): INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077399565Eoz.jpg" \* MERGEFORMATINET 14 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407740932ypMd.jpg" \* MERGEFORMATINET 15 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407741371FFnB.jpg" \* MERGEFORMATINET 16 需要挂载有关盘,才会自动安装DNS INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407741434D07d.jpg" \* MERGEFORMATINET 17 完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077425689rnx.jpg" \* MERGEFORMATINET 18 重启 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742596D44S.jpg" \* MERGEFORMATINET 19 安装完重起系统后登录界面为
使用
域
中
的管理员和密码登录到域 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077426257kHs.png" \* MERGEFORMATINET 20 进入系统后查看计算机的状态 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742652R7uD.png" \* MERGEFORMATINET 21查看管理工具会增加DNS和有关AD的工具,以及安全策略 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742694MvtT.png" \* MERGEFORMATINET 22 点开用户和计算机域控管理界面 (创建域test.com完成) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742729f3b0.png" \* MERGEFORMATINET 三:配置节点win1 和 节点win2的网络,并添加到域
中
1 网络配置 win1 网络配置 网卡1: DNS需要配置DC的IP INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742769IgEN.jpg" \* MERGEFORMATINET 网卡2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742840A6l3.jpg" \* MERGEFORMATINET “高级”里面配置一下禁用NetBIOS 不勾选前面两项 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742943Fy03.jpg" \* MERGEFORMATINET Win2网络设置 网卡1: INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743537GJ7l.jpg" \* MERGEFORMATINET 网卡2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077435693D38.png" \* MERGEFORMATINET Win1 win2 进行相同的操作 2 更改计算机名,以及加入域test.com INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743633bYBe.png" \* MERGEFORMATINET 3 属于域控制账号密码 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743676gbuo.jpg" \* MERGEFORMATINET 4 完成后重启 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743709vOFZ.jpg" \* MERGEFORMATINET 5 域登录 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743759G5G5.png" \* MERGEFORMATINET 6 加入域后的计算机属性 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743787p33j.png" \* MERGEFORMATINET Win2 也是一样的步骤加入到域
中
6 在域控主机192.168.9.176
中
可以看到新添加的成员 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743817WsaU.png" \* MERGEFORMATINET 在步骤五
中
可能会
提示
报错指定域的名称或安全标识(SID)与该域的信任信息不一致 (因为指定域的名称或安全标识(SID)与该域的信任信息不一致)需要修改 修改方法: 1 .从安装盘
中
support\tools\deploy.cab
中
提取sysprep.exe和setuppcl.exe 到桌面 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743850SDwD.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743871Py6C.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743888vP01.png" \* MERGEFORMATINET 2 运行sysprep.exe"确定"开始重新封装 往下就是下一步下一步安装即可 (不能远程操作,封装一次即可,不作详述了) 四:安装win server2003集群 Win1节点上进行操作,关闭其他节点 1 依次单击“开始”、“所有程序”和“管理工具”,然后单击“群集管理器” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077439293FFp.png" \* MERGEFORMATINET 2 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077440578D3X.png" \* MERGEFORMATINET 3 选择域(test.com),键入群集名win2003cluster。下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744070JRQx.png" \* MERGEFORMATINET 4 机器名输入 win1。下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744154ehw0.png" \* MERGEFORMATINET 5 这一步是检测硬件环境是否符合群集要求。如果这一步出现错误
提示
,可以点击“查看日志”,按照
提示
检查网络设置和磁盘阵列连接是否正确 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744230SSkp.gif" \* MERGEFORMATINET 1 通过下一步,输入集群的IP地址,操作系统虚拟服务器的IP 地址 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744249x6HR.gif" \* MERGEFORMATINET 6 输入域用户名和密码,这里
使用
的是域管理员administrator INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744263857b.gif" \* MERGEFORMATINET 说明:在项目实施
时
一定不能用域的管理员administrator。应该要求用户网络管理员提供一个专门管理 群集的新用户。这个新用户在各个群集节点
中
应该在本地管理员组(local administrator group)
中
。 7 点击“仲裁”按钮,在弹出的窗口
中
选择仲裁资源。我们选择磁盘Q(QDisk)作为仲裁盘 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744272ks9Q.gif" \* MERGEFORMATINET 8 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744294mA7n.gif" \* MERGEFORMATINET 9 完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744319FJ6n.gif" \* MERGEFORMATINET 10 群集 win2003cluster 已经配置成功。但是目前只有win1,我们需要将第二个节点加入,构建出容灾群集。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744358n8K5.gif" \* MERGEFORMATINET 11 新建节点 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744371gd4L.gif" \* MERGEFORMATINET 12 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744385peeG.gif" \* MERGEFORMATINET 13 输入“win2” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744396zcBj.png" \* MERGEFORMATINET 14 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744468rsZ5.gif" \* MERGEFORMATINET 15 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744481R038.gif" \* MERGEFORMATINET 16 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744502HRQ7.gif" \* MERGEFORMATINET 17 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744520a8xd.gif" \* MERGEFORMATINET Win2上的共享磁盘QDisk 和ClusterData 已经被win1 所独占。这个警告不用理会 18 下一步,完成win2节点添加 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744536ppLl.gif" \* MERGEFORMATINET 19 操作系统容灾群集已经安装完毕。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744552ya8d.gif" \* MERGEFORMATINET 20 配置群集网络通信 右键选择群集“属性” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744587KWB4.gif" \* MERGEFORMATINET 21 本地连接2 -à属性 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744602x808.png" \* MERGEFORMATINET 22 专门用于群集节点内部通讯
使用
的 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077446226FNs.png" \* MERGEFORMATINET 23确保private 在public 上面(private 优先级更高)。确定完成网络设置。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744651WcyM.jpg" \* MERGEFORMATINET 24 测试操作系统群集 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744660XhOo.gif" \* MERGEFORMATINET 25 点击移动组可以相互切换资源 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744686wgRC.png" \* MERGEFORMATINET 26为了测试群集的
可用
性,在win1 上右键选择“停止群集服务” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744699WCOe.png" \* MERGEFORMATINET 27 Win2 接管了资源,成为目前群集的工作节点 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744712kFdi.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744730Lazx.png" \* MERGEFORMATINET 28 重新启动win1 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744745g883.jpg" \* MERGEFORMATINET Windowns server2003集群完成配置 五 :配置
SQL
Server 2005 群集 1说明:如果群集环境不需要安装报表服务(
SQL
Server Reporting Services),可以忽略此步骤。 安装IIS 2 打开组件服务---计算机---我的电脑---属性—安全配置,选择administrator 用户登陆,输入administrator 的密码。 这一步是必须的,否则在安装
SQL
server 2005 的
时
候会出现COM+错误。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077447844cHJ.gif" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077447977j94.gif" \* MERGEFORMATINET 3 配置
MSDTC
到资源组
中
进入 CMD 运行 net stop
msdtc
msdtc
–uninstall
msdtc
–install net start
msdtc
此操作之后在群集组直接出现
MSDTC
资源 如果出现
msdtc
无法正常
使用
,也可以用此方法重新配置 一般性增加
MSDTC
资源方法: INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_140774481409IC.png" \* MERGEFORMATINET “资源类型”选择“分布式
事务
协调器(DTC)” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077448256dP6.gif" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744854jfNM.gif" \* MERGEFORMATINET 选择仲裁盘和群集名作为其依存资源。完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744867nQMJ.gif" \* MERGEFORMATINET 确定,完成
MSDTC
配置。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744885M46X.gif" \* MERGEFORMATINET 4 注意,在安装
SQL
server 2005 前, 如果主机是多核心的处理器,请修改boot.ini 文件,把CPU 核心数 改为1 .可以在msconfig 选项
中
直接选择修改 ,这个是2005 本身的bug,等完成安装后打SP3 或更高的补丁。 补丁打完之后可修改回正常核心数量 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744896HzT9.gif" \* MERGEFORMATINET 5安装
SQL
Server 2005 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744939QYbK.png" \* MERGEFORMATINET 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077449503Df3.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744968I81t.png" \* MERGEFORMATINET 下一步(步骤2处理不好,会出现com+错误) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077449795J34.png" \* MERGEFORMATINET 开始安装必备组件 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744989AIgW.png" \* MERGEFORMATINET 系统配置检查 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745003rYzQ.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077450180cuh.gif" \* MERGEFORMATINET 输入注册信息 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745031baoA.png" \* MERGEFORMATINET 选择要安装的组件 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745057vz41.png" \* MERGEFORMATINET (所提供光盘只有
SQL
Server Database Services组件) 输入实例名:MS
SQL
2005 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745072podT.png" \* MERGEFORMATINET 输入虚拟服务器的名称:SH-
sql
dbc INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745107ArP0.png" \* MERGEFORMATINET 输入虚拟服务器名称,下一步(区别于集群虚拟服务器IP) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745121U1uU.gif" \* MERGEFORMATINET 为虚拟服务器指定IP 地址,点击“添加” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745126XcS5.gif" \* MERGEFORMATINET 为数据文件指定安装路径,请注意这里的S 盘是数据存储盘(ClusterData),千万不要把数据文件安装到仲裁盘(QDisk)上。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745139mnRW.gif" \* MERGEFORMATINET 可以在集群管理器上分一下组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745149zX6d.gif" \* MERGEFORMATINET 该用户其实应该是cluster,如果用administrator,会造成不能在远程计算机安装(后面述修改方法,也可以之前在域
中
建好用户) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745155lTGS.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745190BL3x.gif" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077451973Bma.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745210d8k8.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077452234KZ9.png" \* MERGEFORMATINET 选择混合模式验证 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745234SblE.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745246Aqpq.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745262pPPB.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745273LV55.png" \* MERGEFORMATINET 开始安装 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745288YFsc.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745350t0Wp.png" \* MERGEFORMATINET 安装程序。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745365spAH.png" \* MERGEFORMATINET 完成后在另一个节点安装。 六:解决远程不能安装问题,创建swg域用户,委托管理 1 打开域控制管理 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077453825h6y.png" \* MERGEFORMATINET 2 新建用户 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745628BIXb.png" \* MERGEFORMATINET 3 添加到组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745724heZa.png" \* MERGEFORMATINET 4 添加到administrator组
中
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745737U5xo.png" \* MERGEFORMATINET 5 查看属性 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745745VMv1.jpg" \* MERGEFORMATINET 6 win1 win2 节点上加用户权限 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745754s7Nj.jpg" \* MERGEFORMATINET 7 添加到swg组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745762t1Z5.jpg" \* MERGEFORMATINET 8 最后全部用swg用户等test.com域上的主机win1,win2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745778Klvg.jpg" \* MERGEFORMATINET 七:安装完成后测试 1 win1上查看增加的资源 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745798o54e.jpg" \* MERGEFORMATINET 2 停止其
中
win1节点,服务自动转移 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745807BB77.jpg" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745813HCSC.jpg" \* MERGEFORMATINET 八:访问数据库,导入数据 1 右键“数据库” “附加” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745821o56o.jpg" \* MERGEFORMATINET 2 导入整个数据库 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745830HtaT.jpg" \* MERGEFORMATINET 3 导入完成后,显示数据 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745846B7dG.jpg" \* MERGEFORMATINET 4 做故障转移
时
,数据库可以正常被访问 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745935DEw2.jpg" \* MERGEFORMATINET
sql
经典语句一部分
经典
SQL
语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份
sql
server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\ms
sql
7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (
使用
旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2
中
列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的
sql
语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表
中
任何重复行而派生出一个结果表。当 ALL 随 UNION 一起
使用
时
(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1
中
但不在 TABLE2
中
的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起
使用
时
(EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2
中
都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起
使用
时
(INTERSECT ALL),不消除重复行。 注:
使用
运算词的几个查询结果行必须是一致的。 12、说明:
使用
外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL
: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT
VB
16,554
社区成员
110,527
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章