4/14/2007

在 Solaris 10 中 安装 oracle 10g R2


http://download-east.oracle.com/docs/cd/B19306_01/install.102/b15705/toc.htm

Install Oracle 10g on Solaris 10


vi /etc/system
set shmsys:shminfo_shmmax=4294967295 (给oracle最大内存设为2G)
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=110
set semsys:seminfo_semmns=310
2. 创建用户和组
# groupadd dba
#useradd –g dba –d /export/home/oracle –m oracle
#passwd oracle (改oracle用户密码)

设定oracle用户的环境参数
#su – oracle
$vi .profile
加入内容:
ORACLE_BASE=/export/home/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.0
ORACLE_SID=ora10g
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/local/lib:/usr/li
b
DISPLAY=192.0.0.12:0.0
TMPDIR=/var/tmp
export ORALCE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH
LD_LIBRARY_PATH
DISPLAY TMPDIR
umask 022
保存 使.profile生效。

3.解压oracle 10g安装包
从光盘上拷到本地硬盘上。#cp -R 10g_db_i.gz /export/home
在解压 #gunzip 10g_db_i.gz
#cpio -ivmd <10g_db_i
如果这时执行/export/home/db/Disk1/run*就会出现这样的错误提示:
Checking installer requirements...

Checking operating system version: must be 5.6, 5.7, 5.8 or 5.9. Actual 5.10
Failed <<<<

Exiting Oracle Universal Installer, log for this session can be found at

/tmp/OraInstall2004-10-26_09-45-32AM/installActions2004-10-26_09-45-32AM.log
查看installActions2004-10-26_09-45-32AM.log

$ vi installActions2004-10-26_09-45-32AM.log
Using paramFile: /export/home/oracle/db/Disk1/install/oraparam.ini


Checking installer requirements...

Checking operating system version: must be 5.6, 5.7, 5.8 or 5.9. Actual 5.10
Failed <<<<

Exiting Oracle Universal Installer, log for this session can be found at /tmp/Or
aInstall2004-10-26_09-45-32AM/installActions2004-10-26_09-45-32AM.log

想要解决这个问题就要在/export/home/db/Disk1/install里,修改oraparam.ini oraparam.var

修改如下:
vi oraparam.ini

#You can customise error message shown for failure through CERTIFIED_VERSION_FAI
LURE_MESSAGE
Solaris=5.6,5.7,5.8,5.9, 5.10 (就是添加5.10)
Linux=redhat-2.1AS
#HPUX=B.11.00
Decunix=V5.1A,V5.1
AIX=5.1.0.0


vi oraparam.var

#You can customise error message shown for failure through CERTIFIED_VERSION_FAI
LURE_MESSAGE
Solaris=5.8,5.9, 5.10 (就是添加5.10)
Windows=4.0,5.0,5.1,5.2
Linux=redhat-2.1AS
HPUX=B.11.11
Decunix=V5.1A,V5.1
AIX=5.1.0.0

保存,在执行。./runInstaller 就OK了。

4/11/2007

分享父母申请ITIN的经验


分享父母申请ITIN的经验

我父母去年来探亲,住了六个多月,年底之前回国。今年我们成功地为他俩申请到了ITIN. 将材料整理一下,和大家分享。

申请ITIN的依据:

1) Pub501 (2006) Exemptions for Dependents, Table 5. Overview of the Rules for Claiming an Exemption for a Dependent

2) 父母满足Substantial Presence Test

a. http://www.irs.gov/businesses/small/international/article/0,,id=96352,00.html.

b. 这个网页上也说明符合条件的是在纳税上被看做US resident. (并不证明是移民法上的US resident)

c. 而且也说明183天并不一定要是当年的183-具体算法可以参照网上的公式(本年的所有天数+去年天数/2+前年天数/3 >183

i. 这样子的话,如果父母一两年前也来过一段时期,那时的天数也可以算进去。

我是PR. 不太清楚其它身份可不可以

须准备的文件:

1)父母护照复印件,必须经过公证。(原件也可以。不过我父母那时已经回国了)

a. 我是将护照非空白页都复印,I-94正反面也复印了(I-94好像不需要。我也不管了)

b. 公证时本人和护照原件必须在场。

2)W-7

a. http://www.irs.gov/pub/irs-pdf/fw7.pdf

b. 表上有详细的说明。应该好好读一遍

c. 父母一人一份,需要本人签名。所以最好在他们回国前就做好。也可以多打几份空白表格先让他们签好。

d. 表上都是基本内容。只是注意6C里的visa number 不要填错。

3)我当年的联邦税表(1040)。

a. 填的时候将6c Dependents: 里填上父母的名字,6c (2) 空出不填。

b. 其他地方按照有两个dependents的情况填

申请步骤:

1)越早寄出越好。有4-6周的处理时间,太晚的话,会影响到交州税的时间。我们是二月初交的材料,三月下旬收到的ITIN.

2)可以自己通过邮局寄。W-7表上有交申请表的地址。

a. 一定要找到最新的表。以前材料是寄到费城,2007年改到了德州

3)也可以到当地的IRS中心(TAC)交。

a. http://www.irs.gov/localcontacts/index.html

b. 我家旁边正好有一个,我是交到了TAC

c. TAC的工作人员受到材料后,会大致帮你看看。通过后盖章然后复印一份给我存底。原件他们帮我寄出。

d. prefer这种方式。可以减少邮件丢失的情况。就算丢了也有IRS的大章作证明。

4)4-6周后,会收到两封信。信里有父母的ITIN. 信一定要保存好。

5)再等几天,联邦税退税也到帐。

6)收到ITIN后,就可以申报州税了。我们州税上没填ITIN的地方。所以只要填dependents的数目就好了

Four Advanced Oracle Classes


Oracle Database 10g:Data Guard Administration

What you will learn:

In this course, students learn how to use Oracle Data Guard to help protect their Oracle Database against planned and unplanned downtimes. Data Guard architecture is discussed, as well as the creation of physical and logical standby databases. In addition, the course examines the performance implications of using various Data Guard features and offers some troubleshooting tips. Students use Enterprise Manager Grid Control to create and manage their Data Guard configuration in the classroom. The course includes a workshop where students have the opportunity to apply what they have learned to meet stated business requirements.

  • Prepare the primary database for a Data Guard Configuration
  • Monitor a Standby configuration
  • Create a Physical Standby database
  • Create a Logical Standby database

Schedule/Purchase

Training Formats

Price

Duration

Course Materials

Instruction Language

View Schedule

Instructor-Led Training

US$ 1,800

3 Days

English

English

Audience:
Technical Consultant
Database Administrators
Support Engineer

Prerequisites:


Required Prerequisites:
Oracle Database 10g: Administration Workshop I Release 2

Suggested Prerequisites:
Oracle Enterprise Manager 10g Grid Control


Course Objectives:
Configure Primary Database
Create physical Standby
Create logical standby
Manage Data Guard configuration with Enterprise Manager Grid Control
Use Data Guard with Real Application Clusters


Course Topics:
Oracle Data Guard: Overview
Factors affecting planned and unplanned down time
Components of Oracle Data Guard
Differences between physical and logical standby databases
Benefits of creating a Data Guard environment
Use of Data Guard in high availability architecture

Understanding the Oracle Data Guard Architecture
Data Guard architecture
Operational requirements of Data Guard
Data Guard processes, transports, and redo log apply
Standby database mode

Data Guard Broker and Enterprise Manager
Data Guard broker architecture
Data Guard broker components
benefits of the Data Guard broker
Data Guard broker configurations
Enterprise Manager to manage your Data Guard configuration
DGMGRL to manage your Data Guard configuration

Creating a Configuration with Enterprise Manager
FORCE LOGGING
create a broker configuration
monitor the broker configuration

Creating a Physical Standby Database by Using SQL
SQL commands to create a physical standby database

Data Protection Modes and Log Transport Services
Data protection modes
Changing the data protection mode of your configuration
Modify log transport services

Data Guard SQL Apply Architecture
Advantages of SQL Apply
When to use a logical standby database
Creating a logical standby database by using Enterprise Manager

Creating a Logical Standby Database by Using SQL
Use SQL commands to create a logical standby database

Switchover and Failover
Database roles
Switchover
Failover
Flashback Database after a failover

Using Data Guard with RAC
Data Guard in a Real Application Clusters environment
Assign threads to standby redo logs
Switchovers and failovers with RAC

Other Considerations for Oracle Data Guard
Back up the primary database with a physical standby database
Back up a logical standby database
Flashback Database features in a Data Guard configuration
Encrypt redo information
Cascaded redo log destinations




Oracle Database 10g: Real Application Clusters

What you will learn

This course offers students an introduction to the general features and capabilities of Oracle Database 10g Release 1 for Oracle Real Application Clusters (RAC).

Students learn how to configure and administer a database for use with Real Application Clusters. The course also explains how to setup and use Automatic Storage Management (ASM) in a Real Application Clusters environment. Lectures are reinforced with hands-on practices designed to walk the student through the RAC administration

Schedule/Purchase

Training Formats

Price

Duration

Course Materials

Instruction Language

View Schedule

Instructor-Led Training

US$ 3,750

5 Days

English

English

Audience:
Database Administrators

Prerequisites:


Required Prerequisites:
Oracle Database 10g: New Features for Administrators
Oracle Database 10g: Administration Workshop I Release 2


Course Objectives:
Identify Real Application Clusters components
Install, create, administer, and monitor a Real Application Clusters database
Use configuration and management tools for Real Application Clusters databases
Migrate your database storage to Automatic Storage Management
Setup services for workloads management, and applications high availability
Develop a backup and recovery strategy for Real Application Clusters databases
Review high availability best practices


Course Topics:
Introduction
Define a cluster
Define Oracle Real Application Clusters
List the advantages of using RAC
Define scalability
High availability and RAC

Architecture and Concepts
List the various components of Cluster Ready Services (CRS) and Real Application Clusters (RAC)
Describe the various types of files used by a RAC database
Describe the various techniques used to share database files across a cluster
Describe the purpose of using services with RAC

RAC Installation and Configuration Part I
Outline Oracle 10g RAC Installation
Preinstallation Tasks
Cluster Setup Tasks
Installing OCFS
Installing Cluster Ready Services

RAC Installation and Configuration Part II
Install Database Software
Launching VIPCA with root.sh
Database Precreation Tasks
Creating the Cluster Database
Database Postinstallation Tasks
Administering Enterprise Manager Jobs in Real Application Clusters
Node Addition and Deletion and the SYSAUX Tablespace
AWR snapshots in RAC

RAC Database Instances Administration
Understand the EM Cluster Database Home Page
Starting and Stopping RAC Instances
RAC Initialization Parameter Files
Adding a Node to a Cluster
Deleting Instances from a RAC Database
Quiescing RAC Databases
Administering Alerts with Enterprise Manager

Administering Storage in RAC Part I
Describe automatic storage management (ASM)
Install the ASM software
Set up initialization parameter files for ASM and database instances
Start up and shut down ASM instances
Add ASM instances to the target list of Database Control
Use Database Control to administer ASM in a RAC environment

Administering Storage in RAC Part II
Manage redo log groups in a RAC environment
Manage undo tablespaces in a RAC environment
Use SRVCTL to manage ASM instances
Migrate database files to ASM
Manage and recover the OCR file and voting disk

Services
Configure and manage services in a RAC environment
Use services with client applications
Use services with the Database Resource Manager
Use services with the Scheduler
Set performance-metric thresholds on services
Configure services aggregation and tracing

High Availability of Connections
Configure client side connect-time load balancing
Configure client side connect-time failover
Configure server side connect-time load balancing
Benefit from Fast Application Notification (FAN)
Configure server-side callouts
Configure the server and client-side ONS
Configure Transparent Application Failover (TAF)

Managing Backup and Recovery in RAC
Configure RAC Recovery Settings with EM
Configure RAC Backup Settings with EM
Initiate Archiving
Configuring RMAN
RAC Backup and Recovery Using EM

RAC Performance Tuning
Determine RAC specific tuning components
Tune instance recovery in RAC
Determine RAC specific wait events, global enqueues, and system statistics
Implement most common RAC tuning tips
Use the Cluster Database Performance pages
Use Automatic Workload Repository and Automatic Database Diagnostic Monitor in RAC

Design for High Availability
Design a Maximum Availability Architecture in your environment
Determine the best RAC and Data Guard topologies for your environment
Configure the Data Guard Broker configuration files in a RAC environment
Patch your RAC system in a rolling fashion


Oracle Enterprise Manager 10g Grid Control

What you will learn

This course introduces students to Oracle Enterprise Manager 10g Grid Control. Students learn how to use Grid Control to install the management agent, configure administrators and groups, manage targets and jobs and establish security of the environment. Hands-on practice sessions give students an opportunity to examine many of the Grid Control capabilities for themselves.

Schedule/Purchase

Training Formats

Price

Duration

Course Materials

Instruction Language

View Schedule

Instructor-Led Training

US$ 3,750

5 Days

English

English

Audience:
Support Engineer
Technical Consultant
Database Administrators

Prerequisites:


Suggested Prerequisites:

Familiarity with Oracle Application Server 10g
Familiarity with Oracle Database 10g
Oracle Application Server 10g: New Features for Administrators
Oracle Database 10g: New Features for Administrators
Oracle Database 10g: Administration Workshop I Release 2


Course Objectives:
Install and configure Oracle Enterprise Manager 10g Grid Control
Administer Oracle Enterprise Manager 10g Grid Control
Use the Oracle Enterprise Manager Grid Control job system
Monitor Web Applications using Application Service Level Monitoring (ASLM)
Secure Oracle Enterprise Manager 10g Grid Control

Return to top


Course Topics:
Understanding Grid Control's Architecture
Grid Control Components
Grid Control Console

Installing the Management Framework
Oracle Management Repository Installation
Oracle Management Service Installation

Managing Grid Control
EMCTL Utility
Grid Control Component Stop and Start

Configuring Groups and Grid Control Administrators
Groups
Roles
Administrator Creation and Configuration

Monitoring Grid Control
Problem Area Detection
Individual Component Monitoring

Monitoring the Grid
Metrics and Thresholds
Metric Baselines
Response Actions
Metric Comparisons
Blackouts

Using the Job System
Job Creation and Scheduling
Job Results
Jobs Search

Host Monitoring and Management with Grid Control
Metric Threshold Values
Host Configuration Comparisons

Database Monitoring and Management with Grid Control
Database Groups
Oracle8i/Oracle9i Target Configurations

Application Server Monitoring and Management with Grid Control
Application Server Control Tasks
Application Server Grid Control Tasks
J2EE Application deployment
Historical Performance Data
Performance Comparisons

Application Service Level Monitoring
Web Application Creation
Web Application Configuration
Web Application Monitoring

Oracle Collaboration Suite Monitoring and Management with Grid Control
OCS Configuration Tasks in Grid Control
OCS Groups
OCS Component Monitoring

Managing Your Configuration
Configuration Tasks
Change Tracking
Patching
Policy Violations
Oracle Home and Database Cloning

Grid Control Security
Secure Communications
Proxy Server Configuration
Grid Control Administrator Authentication
Enterprise User Security Configuration Tasks

Using EM2Go
EM2Go Interface
EM2Go Usage

Extending and Customizing Grid Control
User-Defined Metrics
Custom Targets
Custom Reports

High Availability Options for Grid Control
Describe high availability options for the Oracle Management Service
Describe high availability options for the Oracle Management Repository

Migrating from EMv2 or EMv9 to EM10g
Understand the requirements for migration
Deploy management agents using the legacy job system
Migrate repository data

High Availability Options for Grid Control

Migrating from EMv2 or EMv9 to EM10g


Oracle Database 10g: Implement and Administer a Data Warehouse

What you will learn

This course is intended for database administrators, system administrators, and database application developers who design, maintain, and use data warehouses. Before attending this course, you should be familiar with relational database concepts, basic data warehouse theory, Oracle server concepts including application and server tuning, and the operating system environment under which you are running the Oracle Database Server

Schedule/Purchase

Training Formats

Price

Duration

Course Materials

Instruction Language

View Schedule

Instructor-Led Training

US$ 2,400

4 Days

English

English

Audience:
Data Warehouse Administrator
Database Administrators
Database Designers

Prerequisites:


Required Prerequisites:

Knowledge of Database Administration
Oracle Database 10g: Administration Workshop I Release 2
Oracle Database 10g: SQL Tuning Workshop
Oracle Database 10g: Administration Workshop II Rel 2 New
Oracle Database 10g: 2 Day DBA Release 2 NEW

Suggested Prerequisites:
Oracle Database 10g: New Features for Administrators Release 2


Course Objectives:
Understand and describe the features inherent in an Oracle 10g Data Warehouse
Demonstrate how to implement parallel operations
Demonstrate extraction, transformation, and loading processes
Describe and demonstrate effective usage of Materialized Views in a data warehouse
Describe star, snowflake and 3NF schemas
Implement an effective partitioning schema for your data warehouse tables
Develop an effective backup and recovery strategy
Describe security challenges in a data warehouse

Return to top


Course Topics:
Data Warehouse Design
Logical Versus Physical Design in Data Warehouses
Data Warehousing Schemas
Data Warehousing Objects
Physical Design in Data Warehouses
Hardware and I/O Considerations

Data Warehousing Schemas
Star Schema Model
Snowflake Schema Model
Tuning Star Queries
Star Transformation Hints
Star Transformation Hints
Static Partition Pruning And Star Query
Dynamic Partition Pruning And Star Query
Dynamic Partition Pruning Determination

Partitioning Basics
Supported partition types
Rolling window operations
Partition pruning
Partitioning Using a Template

Extraction, Transportation, and Loading (Extraction and Transportation)
ETL Tools
Extraction Methods
Logical Extraction Methods
Physical Extraction Methods
Change Data Capture
Transportation Using Transportable Tablespaces
Loading Mechanisms

ETL-Loading
Load a formatted flat file into an existing table with SQL*Loader
Performing basic transformations while loading with SQL*Loader
External tables using oracle_loader driver
External tables using oracle_datapump driver
Loading data with OCI and Direct-path APIs

ETL-Transformation
Transformation Using SQL
Transformation Using PL/SQL
Transformation Using Table Functions
Error Logging and Handling Mechanisms

Parallelism Concepts
Parallel Operations
Degree Of Parallelism
Parallel Execution Plan
Operations That Can Be Parallelized
The PARALLEL Clause
Parallel Query
Parallel DDL
Performance Benefits of Parallel DML

Parallel Operations in Data Warehouses
Automated Parallel Query Tuning
Data Distribution And V$PQ_TQSTAT
Object Statistics And V$PQ_TQSTAT

Materialized Views
Materialized Views Overview
Types Of Materialized Views
Nested Materialized Views
Partitioned Materialized Views
Refresh Methods and Modes
Altering/Dropping Materialized Views
Dimensions and Hierarchies
Dimensions and the Data Dictionary

Dimensions
Creating dimensions
Validate dimensions data
View dimension definition information
Distinguish between dimensions and constraints

Materialized Views Refresh
Refresh Methods and Modes
Identifying Dependent MVs
Conditions For Complete/Fast Refreshes
Materialized View Logs
Parallel Refreshes

Query Rewrite
What Can Be Rewritten?
Enabling Query Rewrite
Join Compatibility Checks
Common Joins
PCT and Query Rewrite
Query Rewrite using Multiple MVs
Index Materialized Views

SQL Access Advisor
DBMS_OLAP Advisory Procedures
Workload Management and Sources
Recommendations
Workload Filters and Attribute Types
Tuning of Manually Created Materialized Views
Fast-Refreshable Materialized Views
RECOMMEND_MVIEW_STRATEGY procedure

Data Warehousing System Management
Statistics Collection
Resumable Sessions
Backup and Recovery
Table Compression
Security

全文索引--CONTAINS 语法


我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。

我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。
1. 查询住址在北京的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'beijing' )
remark: beijing是一个单词,要用单引号括起来。

2. 查询住址在河北省的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

3. 查询住址在河北省或北京的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。

4. 查询有 '南京路' 字样的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'nanjing NEAR road' )
remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。
A NEAR B,就表示条件: A 靠近 B。

5. 查询以 '湖' 开头的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"hu*"' )
remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。
记住是 *,不是 %。

6. 类似加权的查询
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。

7. 单词的多态查询
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark: 查询将返回包含 'street','streets'等字样的地址。
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

以上例子都使用英文,不使用中文是因为有的查询方式中文不支持,而且我的计算机是英文系统。

查看当前进程,或死锁进程,并能自动杀掉死进程


/*--处理死锁

查看当前进程,或死锁进程,并能自动杀掉死进程

因为是针对死的,所以如果有死锁进程,只能查看死锁进程
当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程

--邹建 2004.4--*/

/*--调用示例

exec p_lockinfo
--*/
create proc p_lockinfo
@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示
as
declare @count int,@s nvarchar(1000),@i int
select id=identity(int,1,1),标志,
进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,
数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,
登陆时间=login_time,打开事务数=open_tran, 进程状态=status,
工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,
域名=nt_domain,网卡地址=net_address
into #t from(
select 标志='死锁的进程',
spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=a.spid,s2=0
from master..sysprocesses a join (
select blocked from master..sysprocesses group by blocked
)b on a.spid=b.blocked where a.blocked=0
union all
select '|_牺牲品_>',
spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=blocked,s2=1
from master..sysprocesses a where blocked<>0
)a order by s1,s2

select @count=@@rowcount,@i=1

if @count=0 and @show_spid_if_nolock=1
begin
insert #t
select 标志='正常的进程',
spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,
open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address
from master..sysprocesses
set @count=@@rowcount
end

if @count>0
begin
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo nvarchar(255))
if @kill_lock_spid=1
begin
declare @spid varchar(10),@标志 varchar(10)
while @i<=@count
begin
select @spid=进程ID,@标志=标志 from #t where id=@i
insert #t1 exec('dbcc inputbuffer('+@spid+')')
if @标志='死锁的进程' exec('kill '+@spid)
set @i=@i+1
end
end
else
while @i<=@count
begin
select @s='dbcc inputbuffer('+cast(进程ID as varchar)+')' from #t where id=@i
insert #t1 exec(@s)
set @i=@i+1
end
select a.*,进程的SQL语句=b.EventInfo
from #t a join #t1 b on a.id=b.id
end
go

数据库开发精典


数据库开发??精典

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

8.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'

9:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0

10:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')

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 = '表名'

[n].[标题]:
Select * From TableName Order By CustomerName

[n].[标题]:
Select * From TableName Order By CustomerName

回滚事务日志文件中的事务


问:怎样使用Transact-SQL回滚某个位于事务日志文件中的事务(例如,ID 0000:0010a183)?

答:出于预防数据错误的考虑,SQL Server并不支持个别事务的回滚。举例来说,假设两个事务T1和T2使用现金余额域。T1添加了500美金,T2使用更新后的值进行了某个操作。如果回滚T1,则T2可能是错误的。但是,您可以使用时间戳或事务日志标记将日志恢复至预定义的标记或时间点。以下两个例子说明了如何使用SQL Server 2000语法。
例1:使用时间戳将日志进行时点恢复

使用以前的完全备份恢复数据库,并使其为日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK = N'C:\Backups\Fullbackup.bak' WITH NORECOVERY

现在您可以将日志前滚到合适的时间点,并使数据库可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,STOPAT='02/11/2002 17:35:00'

例2:使用数据库标记将日志恢复到预定义时间点的语句

在事务日志中置入一个标记。请注意,被标记的事务至少须提交一个更新,以标记该日志。

BEGIN TRAN MyMark WITH MARK
UPDATE pubs.dbo.LastLogMark SET MarkTime = GETDATE()
COMMIT TRAN MyMark

按照您常用的方法备份事务日志。

BACKUP LOG pubs TO DISK='C:\Backups\Fullbackup.bak' WITH INIT

现在您可以将数据库恢复至日志标记点。首先恢复数据库,并使其为接受日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK=N'C:\Backups\Fullbackup.bak' WITH NORECOVERY

现在将日志恢复至包含该标记的时间点,并使其可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,
STOPAT='02/11/2002 17:35:00'

SQL Server数据库文件恢复技术


SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)
1、正常的备份、恢复方式
正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。
卸下数据库的命令:Sp_detach_db 数据库名
连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db
s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]
sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′
使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。
例子:
假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。
卸下数据库:sp_detach_db 'test'
连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'
sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'
2、只有mdf文件的恢复技术
由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
怎么办呢?别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。[brown][/i]
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
dbcc checkdb('test')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go

SQL Server 数据库管理常用的SQL和T-SQL语句


1. 查看数据库的版本
select @@version

2. 查看数据库所在机器操作系统参数
exec master..xp_msver

3. 查看数据库启动的参数
sp_configure

4. 查看数据库启动时间
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1

查看数据库服务器名和实例名
print 'Server Name...............: ' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................: ' + convert(varchar(30),@@SERVICENAME)
5. 查看所有数据库名称及大小
sp_helpdb

重命名数据库用的SQL
sp_renamedb 'old_dbname', 'new_dbname'

6. 查看所有数据库用户登录信息
sp_helplogins

查看所有数据库用户所属的角色信息
sp_helpsrvrolemember

修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程

更改某个数据对象的用户属主
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'

注意: 更改对象名的任一部分都可能破坏脚本和存储过程。

把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本

7. 查看链接服务器
sp_helplinkedsrvlogin

查看远端数据库用户登录信息
sp_helpremotelogin

8.查看某数据库下某个数据对象的大小
sp_spaceused @objname

还可以用sp_toptables过程看最大的N(默认为50)个表

查看某数据库下某个数据对象的索引信息
sp_helpindex @objname

还可以用SP_NChelpindex过程查看更详细的索引情况
SP_NChelpindex @objname

clustered索引是把记录按物理顺序排列的,索引占的空间比较少。
对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。
查看某数据库下某个数据对象的的约束信息
sp_helpconstraint @objname

9.查看数据库里所有的存储过程和函数
use @database_name
sp_stored_procedures
查看存储过程和函数的源代码
sp_helptext '@procedure_name'

查看包含某个字符串@str的数据对象名称
select distinct object_name(id) from syscomments where text like '%@str%'

创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数

解密加密过的存储过程和函数可以用sp_decrypt过程

10.查看数据库里用户和进程的信息
sp_who
查看SQL Server数据库里的活动用户和进程的信息
sp_who 'active'
查看SQL Server数据库里的锁的情况
sp_lock

进程号1--50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
spid是进程编号,dbid是数据库编号,objid是数据对象编号
查看进程正在执行的SQL语句
dbcc inputbuffer ()

推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句
sp_who3

检查死锁用sp_who_lock过程
sp_who_lock

11.收缩数据库日志文件的方法
收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M
backup log @database_name with no_log
dbcc shrinkfile (@database_name_log, 5)
12.分析SQL Server SQL 语句的方法:

set statistics time {on | off}
set statistics io {on | off}
图形方式显示查询执行计划

在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形

文本方式显示查询执行计划
set showplan_all {on | off}

set showplan_text { on | off }
set statistics profile { on | off }

13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法

先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作

alter database [@error_database_name] set single_user

修复出现不一致错误的表

dbcc checktable('@error_table_name',repair_allow_data_loss)

或者可惜选择修复出现不一致错误的小型数据库名

dbcc checkdb('@error_database_name',repair_allow_data_loss)
alter database [@error_database_name] set multi_user
CHECKDB 有3个参数:
repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
修复操作可以在用户事务下完成以允许用户回滚所做的更改。
如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
修复完成后,请备份数据库。
repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
这些修复可以很快完成,并且不会有丢失数据的危险。
repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
执行这些修复时不会有丢失数据的危险。

生活小技巧


生活小技巧


1 、巧用牙膏:若有小面积皮肤损伤或烧伤、烫伤,抹上少许牙膏,可立即止血止痛,也可防止感染,疗效颇佳。
2 、巧除纱窗油腻:可将洗衣粉、吸烟剩下的烟头一起放在水里,待溶解后,拿来擦玻璃窗、纱窗,效果均不错。
3 、将虾仁放入碗内,加一点精盐、食用碱粉,用手抓搓一会儿后用清水浸泡,然后再用清水洗净,这样能使炒出的虾仁透明如水晶,爽嫩可口
4 、和饺子面的窍门:在1斤面粉里掺入6个蛋清,使面里蛋白质增加,包的饺子下锅后蛋白质会很快凝固收缩,饺子起锅后收水快,不易粘连
5 、将残茶叶浸入水中数天后,浇在植物根部,可促进植物生长;把残茶叶晒干,放到厕所或沟渠里燃熏,可消除恶臭,具有驱除蚊蝇的功能。
6 、夹生饭重煮法:如果是米饭夹生,可用筷子在饭内扎些直通锅底的孔,洒入少许黄酒重焖,若只表面夹生,只要将表层翻到中间再焖即可。
7 、烹调蔬菜时如果必须要焯,焯好菜的水最好尽量利用。如做水饺的菜,焯好的水可适量放在肉馅里,这样即保存营养,又使水饺馅味美有汤
8 、炒鸡蛋的窍门:将鸡蛋打入碗中,加入少许温水搅拌均匀,倒入油锅里炒,炒时往锅里滴少许酒,这样炒出的鸡蛋蓬松、鲜嫩、可口。 /
9 、如何使用砂锅1:新买来的砂锅第一次使用时,最好用来熬粥,或者用它煮一煮浓淘米水,以堵塞砂锅的微细孔隙,防止渗水_
10 、巧用“十三香”:炖肉时用陈皮,香味浓郁;吃牛羊肉加白芷,可除膻增鲜;自制香肠用肉桂,味道鲜美;熏肉熏鸡用丁香,回味无穷。
11 、和饺子面的窍门2:面要和的略硬一点,和好后放在盆里盖严密封,饧10-15分钟,等面中麦胶蛋白吸水膨胀,充分形成面筋后再包饺子
12 、香菜是一种伞形花科类植物,富含香精油,香气浓郁,但香精油极易挥发,且经不起长时间加热,香菜最好在食用前加入,以保留其香气。
13 、当进行高温洗涤或干衣程序时,不可碰触机门玻璃,以免烫伤。拿出烘干的衣物时,要小心衣物上的金属部分,如拉链、纽扣等,以免烫伤。
14 、如果衣领和袖口较脏,可将衣物先放进溶有洗衣粉的温水中浸泡15-20分钟,再进行正常洗涤,就能洗干净。
15 、如何使用砂锅2:用砂锅熬汤、炖肉时,要先往砂锅里放水,再把砂锅置于火上,先用文火,再用旺火。
16 、烹调蔬菜时,加点菱粉类淀粉,使汤变得稠浓,不但可使烹调出的蔬菜美味可口,而且由于淀粉含谷胱甘肽,对维生素有保护作用。 /
17 、米饭若烧糊了,赶紧将火关掉,在米饭上面放一块面包皮,盖上锅盖,5分钟后,面包皮即可把糊味吸收。
18 、洗衣粉用量:若衣服不太脏或洗涤时泡沫过多,则要减少洗衣粉用量。避免洗衣粉使用过量,不仅省钱而且保护环境,可令洗衣机更耐用。
19 、煮饺子时要添足水,待水开后加入2%的食盐,溶解后再下饺子,能增加面筋的韧性,饺子不会粘皮、粘底,饺子的色泽会变白,汤清饺香。
20 、许多人爱吃青菜却不爱喝菜汤,事实上,烧菜时,大部分维生素已溶解在菜汤里。比如小白菜炒好后,会有70%的维生素C溶解在菜汤里。
21 、白袜子若发黄了,可用洗衣粉溶液浸泡30分钟后再进行洗涤。
22 、如何使用砂锅3:从火上端下砂锅时,一定要放在干燥的木板或草垫上,切不要放在瓷砖或水泥地面上。
23 、烧荤菜时,在加了酒后,再加点醋,菜就会变得香喷喷的。烧豆芽之类的素菜时,适当加点醋,味道好营养也好,因为忱锥晕??赜斜;ぷ饔蔓br>24 、面包能消除衣服油迹:用餐时,衣服如果被油迹所染,可用新鲜白面包轻轻摩擦,油迹即可消除。
25 、用残茶叶擦洗木、竹桌椅,可使之更为光洁。把残茶叶晒干,铺撒在潮湿处,能够去潮;残茶叶晒干后,还可装入枕套充当枕芯,非常柔软 /
26 、饺子煮熟以后,先用笊篱把饺子捞出,随即放入温开水中浸涮一下,然后再装盘,饺子就不会互相粘在一起了。
27 、炒鲜虾的窍门:炒鲜虾之前,可先将虾用浸泡桂皮的沸水冲烫一下,然后再炒,这样炒出来的虾,味道更鲜美。
28 、蔬菜尽可能做到现炒现吃,避免长时间保温和多次加热。另外,为使菜梗易熟,可在快炒后加少许水闷熟。
29 、面包能消除地毯污迹:家中的小块地毯如果脏了,可用热面包渣擦拭,然后将其挂在阴凉处,24小时后,污迹即可除净。
30 、男子剃须时,可用牙膏代替肥皂,由于牙膏不含游离碱,不仅对皮肤无刺激,而且泡沫丰富,气味清香,使人有清凉舒爽之感。
31 、风油精的妙用(1):在电风扇的叶子上洒上几滴风油精,随着风叶的不停转动,可使满室清香,而且有驱赶蚊子的效用。
32 、刷油漆前,先在双手上抹层面霜,刷过油漆后把奶油涂于沾有油漆的皮肤上,用干布擦拭,再用香皂清洗,就能把附着于皮肤上的油漆除掉。
33 、豆腐一般都会有一股卤水味。豆腐下锅前,如果先在开水中浸泡10多分钟,便可除去卤水味,这样做出的豆腐不但口感好,而且味美香甜。
34 、煮鸡蛋时,可先将鸡蛋放入冷水中浸泡一会,再放入热水里煮,这样煮好的鸡蛋蛋壳不破裂,且易于剥掉。 /
35 、手表受磁,会影响走时准确。消除方法很简单,只要找一个未受磁的铁环,将表放在环中,慢慢穿来穿去,几分钟后,手表就会退磁复原。
36 、豆腐性偏寒,平素有胃寒者,如食用豆腐后有胸闷、反胃等现象,则不宜食用;易腹泻、腹胀脾虚者,也不宜多食豆腐
37 、牙膏也有洁肤功能!洗澡时用牙膏代替浴皂搓身去污,既有明显的洁肤功能,还能使浴后浑身凉爽,而且还有预防痱子的作用
38 、用微波炉做菜时,首先要用调料将原料浸透。这是因为微波烹任过程快,若不浸润透很难入味,且葱、姜、蒜等增香的作用也难以发挥
39 、葡萄汁送服降压药效果好!用葡萄汁代替白开水送服降压药,能使血压降得平稳,且不会出现血压忽高忽低的现象。
40 、煮饭不宜用生水。因为自来水中含有氯气,在烧饭过程中,它会破坏粮食中所含的维生素B1,若用开水煮饭,维生素B1可免受损失。
41 、砧板防裂小窍门:买回新砧板后,在砧板上下两面及周边涂上食用油,待油吸干后再涂,涂三四遍,油干后即可使用,这样砧板便会经久耐
42 、风油精的妙用(2):洗澡时,在水中加入数滴风油精,浴后会有浑身清凉舒爽感觉,还有防治痱子、防蚊叮咬、祛除汗臭的作用。
43 、炸馒头片时,先将馒头片在冷水里浸一下,然后再入锅炸,这样炸好的馒头片焦黄酥脆,既好吃又省油。
44 、做菜或做汤时,如果做咸了,可拿一个洗净的土豆切成两半放入汤里煮几分钟,这样,汤就能由咸变淡了。
45 、舒缓眼部疲劳小窍门:用水浸泡药用小米草或母菊花,然后将毛巾浸湿,敷于眼部10到15分钟,可有效舒缓眼部疲劳。
46 、夏日天气炎热,身上容易长痱子,可用温水将长有痱子的部位洗净,涂擦一层牙膏,痱子不久即可消失。
47 、室内厕所即使冲洗得再干净,也常会留下一股臭味,只要在厕所内放置一小杯香醋,臭味便会消失。其有效期为六、七天,可每周换一次。
48 、如果用陈米做米饭,淘过米之后,可在往米中加水的同时,加入1/4或1/5啤酒,这样蒸出来的米饭香甜,且有光泽,如同新米一样。
49 、煮饺子时,饺子皮和馅中的水溶性营养素除因受热小部分损失之外,大部分都溶解在汤里,所以,吃水饺最好把汤也喝掉。
50 、热水泡双手可治偏头痛。把双手浸入热水中,水量以浸过手腕为宜,并不断地加热水,以保持水温。半小时后,痛感即可减轻,甚至完全消失
51 、忌食鲜黄花菜!因为鲜黄花菜内含秋水仙碱有毒物质,食用后会导致恶心、腹泻等。而加工后的干黄花菜已将秋水仙碱溶出,食用则不会中毒。
52 、风油精的妙用(3):在点燃的蚊香上洒几滴风油精,蚊香放出的烟气不会呛,而且清香扑鼻,驱蚊效果也会更佳。
53 、在洗碗水中放几片柠檬皮和橘子皮,或滴几滴醋,能消除碗碟等餐具上的异味。同时,它还能使硬水软化,同时增加瓷器的光泽感。
54 、皮肤小面积擦伤会导致局部肿胀,这时可在伤口处涂些牙膏,不仅具有止痛、止血、减轻肿胀的功效,还有防止伤口化脓的作用。
55 、烤肉防焦小窍门:烤肉时,可在烤箱里放一只盛有水的器皿,因为器皿中的水可随烤箱内温度的升高而变成水蒸气,防止烤肉焦糊。
56 、巧洗带鱼:带鱼身上的腥味和油腻较大,用清水很难洗净,可把带鱼先放在碱水中泡一下,再用清水洗,就会很容易洗净,而且无腥味。
57 、芥末煮水洗脚可降血压。将80克芥末面放在洗脚盆里,加半盆水搅匀,用炉火煮开,稍凉后洗脚。每天早晚1次,1天后血压就可下降。
58 、煮排骨时放点醋,可使排骨中的钙、磷、铁等矿物质溶解出来,利于吸收,营养价值更高。此外,醋还可以防止食物中的维生素被破坏。
59 、巧剥蒜皮:将蒜用温水泡3-5分钟捞出,用手一搓,蒜皮即可脱落。如需一次剥好多蒜,可将蒜摊在案板上,用刀轻轻拍打即可脱去蒜皮。
60 、蚊香定时熄灭法:用一个铁夹子,用时夹在蚊香所需要的长度上,当蚊香烧到铁夹夹的地方时,就会熄灭,既不影响睡眠,也可节约蚊香。
61 、面包与饼干不宜一起存放。面包含水分较多,饼干一般则是干而脆,两者如果存放在一起,就会使面包变硬,饼干也会因受潮失去酥脆感
62 、烧糖醋鱼块及其它需放醋的菜肴时,最好在即将起锅时再放醋,这样能充分保持醋味,若放的过早,醋就会在烹调过程中蒸发掉而使醋味大减
63 、梨可防晒!常食梨能使肌肤保持弹性,不起皱纹。梨中含有丰富的维生素E,对太阳光的暴晒能起到防护作用。
64 、各种染发剂在室温或炎热的天气中,均会失去部分功能或改变色泽。若放在冰箱中保存,可长期保持其原有的功能,不会变质
65 、冷冻食品解冻法1:肉类:适宜在室温下自然解冻,在水中解冻会使营养流失;家禽:宜在水中解冻,但未去内脏的最好在室温下自然解冻。
66 、彩电不能自行接地线,如果接地线,一旦电源插头接反时,会使机内地线与电源的火线接通而使机架等部件带电,这样会有触电的危险。
67 、揭胶纸、胶带的妙法:贴在墙上的胶纸或胶带,如果生硬去揭,会损坏物件,可用蒸汽熨斗熨一下,就能很容易揭去了。
68 、皮鞋霉斑清除法:皮鞋放久了发霉时,可用软布蘸酒精加水(1:1)溶液进行擦拭,然后放在通风处晾干。对发霉的皮包也可如此处理。
69 、巧制肉馅:将要做馅的肉放入冰箱冷冻,待完全冻实后取出,用擦菜板擦肉,很容易就能擦把冻肉成细条,之后,只需用刀剁几下就可以了。
70 、皱褶身份证复原法:将身份证放在桌上,上面盖一两层纸,用熨斗隔纸熨烫(温度不易过高),熨好一面再熨另一面,即可使之平展如初。
71 、电吹风治疗肩周炎!用电吹风以适当距离对准患者肩部用热风吹约10分钟,每天两次,3周可愈。若先在患者肩部擦上药酒再吹,效果更佳
72 、煮肉的时候,如果想使汤味鲜美,应该把肉放入冷水中慢慢地煮;如果想使肉味鲜美,则应该把肉放在热水里煮。
73 、宝石戒指如何清洗?可用棉棒在氧化镁和氨水混合物,或花露水、甘油中沾湿,擦洗宝石和框架,然后用绒布擦亮即可。
74 、芦笋可减肥!芦笋能提高人体的基础代谢,促进人体内热量的消耗,并有很强的脱水能力,因此,多吃新鲜芦笋能变得苗条。
75 、如何让蜡烛不“流泪”?生日蜡烛用之前先放到冰箱的冷冻室里冷冻24小时,再插到蛋糕上,点燃后就没有烛油流下而弄脏蛋糕了。 /
76 、夏天甲鱼易被蚊子叮咬而死亡,但如果将甲鱼养在冰箱冷藏的果盘盒内,既可防止蚊子叮咬,又可延长甲鱼的存活时间。
77 、冷冻食品解冻法2:鱼类:宜在5%的40-50度食盐水中解冻;蛋品:可装在不透水的金属容器中,将容器浸在20度的水中迅速解冻br>78 、茶叶与食糖、糖果不宜一起存放。茶叶易吸潮,而食糖、糖果却恰恰含水分多,这两类物品存放在一起,就会使茶叶因受潮而发霉或变味。
79 、洗涤面粉袋时不要在水中搓洗,可将面袋放在清水中泡1-2天,待发酵后,面粉会从面袋上自动脱落,这时再用清水漂洗,即可干净如初。
80 、茶叶受潮不要晒!夏季茶叶容易受潮,若把受潮的茶叶放到太阳下晒就会走味。可用铁锅慢火炒至水气消失,晾干后密封保存,可保持其原味
81 、牛仔裤穿时间长了就会褪色。可以把新买来的牛仔裤放入浓盐水中浸泡12小时后,再用清水洗净,以后再洗涤时就不会褪色了
82 、丝瓜治慢性喉炎。用丝瓜绞汁或将丝瓜藤切断,让其汁自然滴出,放入碗内,上锅蒸熟,再加适量冰糖饮用,就能有效治疗慢性喉炎。
83 、有的人吃药总是把药片掰开吃,以为药片小了利于吞咽。其实药片掰开后变成尖的,反而不利于下咽,还易划伤食道,所以药片不要掰开吃。
84 、指甲油长久不脱落法:涂指甲油之前,先用棉花蘸点醋把指甲擦干净,等醋干后再涂指甲油,这样指甲油就不容易脱落了。
85 、识别手机的窍门:正版手机机身号码,外包装号码,从手机上调出的号码三号一致。在验钞机下,进网许可标签右下角显示CMII字样。
86 、巧切松花蛋:用刀切松花蛋,蛋黄会粘在刀上,可用丝线将松花蛋割开,既均匀又不粘蛋黄。将刀在热水中烫一下再切,也能切的整齐漂亮。
87 、不能用茶叶煮鸡蛋!因为茶叶中除含有生物碱外,还有多种酸化物质,这些化合物与鸡蛋中的铁元素结合,对胃有刺激作用,不利于消化吸收
88 、瓜果的清洗:食用前,先将瓜果在盐水中浸泡20-30分钟,可去除瓜果表皮残存的农药或寄生虫卵,且盐水还有杀灭某些病菌的作用。
89 、高压锅烹调火候:高压锅烹调时间从限压阀首次出气算起。鸡1千克加水2千克,18分钟可脱骨;排骨1千克加水2千克,20分钟可脱骨
90 、巧选茶叶:看匀度,将茶叶倒入茶盘里,手拿茶盘向一定方向旋转数圈,使不同形状的茶叶分出层次中段茶越多,表明匀度越好。
91 、洋葱防衰老。洋葱对人体的结缔组织和关节有益。洋葱不仅能提供人体需要的许多养分,还含有微量元素硒,因此,多食洋葱能够预防衰老。 /
92 、巧除家电缝隙的灰尘:家用电器的缝隙里常常会积藏很多灰尘,且用布不宜擦净,可将废旧的毛笔用来清除缝隙里的灰尘,非常方便。
93 、首饰收藏与保养的窍门:轻拿轻放,避免碰撞与磨擦;避免受高温和酸、碱溶液接触;经常检查,防止宝石脱落;及时取下收藏和清洗保存。
94 、牛奶渍鱼格外香!把收拾好的鱼放到牛奶里泡一下,取出后裹一层干面粉,再入热油锅中炸制,其味道格外香美。
95 、鉴别珍珠的窍门:将珍珠放在阴暗处,闪闪发光的是上等珍珠;珍珠表面的清洁度和颜色决定珍珠的价值;珍珠越大、越圆越有价值。
96 、大枣巧去皮:将干的大枣用清水浸泡3小时,然后放入锅中煮沸,待大枣完全泡开发胖时,将其捞起剥皮,很容易就能剥掉。
97 、巧选茶叶:看茶叶松紧,紧而重实的质量好,粗而松弛、细而碎的质量差;看净度,茶叶中有较多茶梗、叶柄、茶籽及杂质的质量差。
98 、空腹不宜吃柿子。如果空腹吃大量未加工或未去皮的柿子,而胃里的游离酸含量又较高时,就会凝结成块,形成柿石,引起肚子疼、呕吐等。
99 、巧洗铁锅油垢:炒菜锅用久了,锅上积存的油垢很难清除掉,如果将新鲜的梨皮放在锅里加水煮一会儿,油垢就很容易清除了。 /
100 、瓶子上的芰掀扛怯惺币蚺〉锰?舳?虿豢??耸笨山??銎孔臃湃氡?渲校ǘ?究煞旁谑彝猓├涠骋换岫??缓笤倥。?苋菀拙湍芘】??
101 、豆腐可用来美容!每天早晨起床后,用豆腐一块,放在掌心,用以摩擦面部几分钟,坚持一个月,面部肌肤就会变得白嫩滋润。
102 、高压锅烹调火候:牛肉1千克加水2千克,17分钟即可将肉煮烂;大米1500克加水1千克,9分钟即可煮熟
103 、拉链的保养:拉链不能拉得太急、太猛;不能崩得太紧;保持干燥,防止和酸、碱东西接触;拉链发涩,可涂点蜡,轻轻拉几下,即可。
104 、巧选茶叶:看色泽,绿茶翠绿有光的质量好;红茶褐色带油润的质量好;若绿茶含较多白毫,红茶含较多橙黄色芽头,均为高级茶。
105 、海参的贮藏:将海参晒得干透,装入双层食品塑料袋中,加几头蒜,然后扎紧袋口,悬挂在高处,不会变质生虫。
106 、在灯下挂一把香葱,或用纱袋装几根葱段,各种小虫都不会飞来。蚊子最怕橘红色光,用橘红色玻璃纸或绸布套在灯泡上,蚊子就不会*近了
107 、在房间里放上几盒开盖的风油精、清凉油,或在墙上涂点薄荷可驱蚊。在室内栽一两株西红柿,西红柿枝叶发出的气味会把蚊子赶走。 /
108 、碱水去鲜桃毛!在清水中放入少许食用碱,将鲜桃放入浸泡3分钟,搅动几下,桃毛便会自动脱落,清洗几下毛就没有了,很方便!
109 、白背心穿久了会出现黑斑,可取鲜姜2两捣烂放锅内加1斤水煮沸,稍凉后倒入洗衣盆,浸泡白背心十分钟,再反复揉搓几遍,黑斑即可消除_
110 、切肥肉的窍门:切肥肉时,可先将肥肉蘸一下凉水,然后放在案板上,一边切一边洒点凉水,这样切着省力,肥肉也不会滑动,且不易粘案板

All about Tx


事务全攻略

一 事务的属性

事务具有ACID属性
即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性

原子性

就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全
回滚,全部不保留


一致性
事务完成或者撤销后,都应该处于一致的状态

隔离性

多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时,
不合理的存取和不完整的读取数据


永久性
事务提交以后,所做的工作就被永久的保存下来


二 事务并发处理会产生的问题

丢失更新

当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、
每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。

脏读
当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。
第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。

不可重复读

当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。
不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。
然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。

幻像读

当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。
事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。


三 事务处理类型


自动处理事务

系统默认每个T-SQL命令都是事务处理 由系统自动开始并提交


隐式事务

当有大量的DDL 和DML命令执行时会自动开始,并一直保持到用户明确提交为止,切换隐式事务可以用SET IMPLICIT_TRANSACTIONS
为连接设置隐性事务模式.当设置为 ON 时,SET IMPLICIT_TRANSACTIONS 将连接设置为隐性事务模式。当设置为 OFF 时,则使连接返回到自动提交事务模式


用户定义事务

由用户来控制事务的开始和结束 命令有: begin tran commit tran rollback tran 命令


分布式事务
跨越多个服务器的事务称为分布式事务,sql server 可以由DTc microsoft distributed transaction coordinator
来支持处理分布式事务,可以使用 BEgin distributed transaction 命令启动一个分布式事务处理



四 事务处理的隔离级别

使用SET TRANSACTION ISOLATION LEVEL来控制由连接发出的所有语句的默认事务锁定行为

从低到高依次是


READ UNCOMMITTED

执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。

举例

设table1(A,B,C)
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

新建两个连接
在第一个连接中执行以下语句
select * from table1
begin tran
update table1 set c='c'
select * from table1
waitfor delay '00:00:10' --等待10秒
rollback tran
select * from table1

在第二个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
print '脏读'
select * from table1
if @@rowcount>0
begin
waitfor delay '00:00:10'
print '不重复读'
select * from table1
end

第二个连接的结果

脏读
A B C
a1 b1 c
a2 b2 c
a3 b3 c

'不重复读'
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3



READ COMMITTED

指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。


在第一个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
begin tran
print '初始'
select * from table1
waitfor delay '00:00:10' --等待10秒
print '不重复读'
select * from table1
rollback tran


在第二个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

update table1 set c='c'


第一个连接的结果

初始
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

不重复读
A B C
a1 b1 c
a2 b2 c
a3 b3 c



REPEATABLE READ

锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。


在第一个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
print '初始'
select * from table1
waitfor delay '00:00:10' --等待10秒
print '幻像读'
select * from table1
rollback tran


在第二个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
insert table1 select 'a4','b4','c4'


第一个连接的结果

初始
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

幻像读
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3
a4 b4 c4


SERIALIZABLE

在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。


在第一个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
print '初始'
select * from table1
waitfor delay '00:00:10' --等待10秒
print '没有变化'
select * from table1
rollback tran


在第二个连接中执行以下语句
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
insert table1 select 'a4','b4','c4'


第一个连接的结果

初始
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

没有变化
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3


五 事务处理嵌套的语法和对@@TRANCOUNT的影响

BEGIN TRAN @@TRANCOUNT+1
COMMIT TRAN @@TRANCOUNT-1
ROLLBACK TR
------------------------------------------------------------

MS SQL Server数据库恢复


MS SQL Server数据库恢复

2、只有mdf文件的恢复技术
由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。

但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
怎么办呢?别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
H.验证数据库一致性(可省略)
dbcc checkdb('test')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go

两台SQL Server数据同步解决方案


两台SQL Server数据同步解决方案

复制的概念
  
  复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
  
  SQL复制的基本元素包括
  
  出版服务器、订阅服务器、分发服务器、出版物、文章
  
  SQL复制的工作原理
  
  SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器
  
  SQL SERVER复制技术类型
  
  SQL SERVER提供了三种复制技术,分别是:
  
  1、快照复制(呆会我们就使用这个)
  2、事务复制
  3、合并复制
  
  只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
  
  第一先来配置出版服务器
  
  (1)选中指定[服务器]节点
  (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令
  (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。
  (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)
  
  第二创建出版物
  
  (1)选中指定的服务器
  (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框
  (3)选择要创建出版物的数据库,然后单击[创建发布]
  (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
  (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
  (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
  (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
  
  第三设计订阅
  
  (1)选中指定的订阅服务器
  (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
  (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。
  (4)单击[完成]。完成订阅操作。
  
  完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制??发布内容 ??右键发布内容??属性??击活??状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和 23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表?
  
  一个手工同步的方案
  
  --定时同步服务器上的数据
  
  --例子:
  
  --测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test
  
  --服务器上的表(查询分析器连接到服务器上创建)
  
  create table [user](id int primary key,number varchar(4),name varchar(10))
  go
  
  --以下在局域网(本机操作)
  
  --本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录
  
  if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [user]
  GO
  create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
  go
  
  --创建触发器,维护state字段的值
  
  create trigger t_state on [user]
  after update
  as
  update [user] set state=1
  from [user] a join inserted b on a.id=b.id
  where a.state is not null
  go
  
  --为了方便同步处理,创建链接服务器到要同步的服务器
  
  --这里的远程服务器名为:xz,用户名为:sa,无密码
  
  if exists(select 1 from master..sysservers where srvname='srv_lnk')
  exec sp_dropserver 'srv_lnk','droplogins'
  go
  exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz'
  exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa'
  go
  
  --创建同步处理的存储过程
  
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  drop procedure [dbo].[p_synchro]
  GO
  create proc p_synchro
  as
  --set XACT_ABORT on
  
  --启动远程服务器的MSDTC服务
  
  --exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output
  
  --启动本机的MSDTC服务
  
  --exec master..xp_cmdshell 'net start msdtc',no_output
  
  --进行分布事务处理,如果表用标识列做主键,用下面的方法
  
  --BEGIN DISTRIBUTED TRANSACTION
  
  --同步删除的数据
  
  delete from srv_lnk.test.dbo.[user]
  where id not in(select id from [user])
  
  --同步新增的数据
  
  insert into srv_lnk.test.dbo.[user]
  select id,number,name from [user] where state is null
  
  --同步修改的数据
  
  update srv_lnk.test.dbo.[user] set
  number=b.number,name=b.name
  from srv_lnk.test.dbo.[user] a
  join [user] b on a.id=b.id
  where b.state=1
  
  --同步后更新本机的标志
  
  update [user] set state=0 where isnull(state,1)=1
  --COMMIT TRAN
  go
  
  --创建作业,定时执行数据同步的存储过程
  
  if exists(SELECT 1 from msdb..sysjobs where name='数据处理')
  EXECUTE msdb.dbo.sp_delete_job @job_name='数据处理'
  exec msdb..sp_add_job @job_name='数据处理'
  
  --创建作业步骤
  
  declare @sql varchar(800),@dbname varchar(250)
  select @sql='exec p_synchro' --数据处理的命令
  ,@dbname=db_name() --执行数据处理的数据库名
  exec msdb..sp_add_jobstep @job_name='数据处理',
  @step_name = '数据同步',
  @subsystem = 'TSQL',
  @database_name=@dbname,
  @command = @sql,
  @retry_attempts = 5, --重试次数
  @retry_interval = 5 --重试间隔
  
  --创建调度
  
  EXEC msdb..sp_add_jobschedule @job_name = '数据处理',
  @name = '时间安排',
  @freq_type = 4, --每天
  @freq_interval = 1, --每天执行一次
  @active_start_time = 00000 --0点执行
  go

SQL Server 基础概念集


1、如何理解SQL Server的实例

在项目实施过程中,不少用户会有这样的需求:要求开发一套基于SQL Server的新系统,这套系统验收通过后,要和一个原有的SQL Server系统合并,共用一个服务器,所以不能为新系统提供单独的服务器(资金上不允许为开发提供单独的服务器)。但是要保障新系统的开发而又不影响旧 系统的正常运行,所以要求新系统使用单独的SQL Server服务。在SQL Server 2000以前的版本中,这样的要求是无法满足的,但在SQL Server 2000中,就可以在原有SQL Server实例的基础上,再添加一个实例来解决问题。
所谓的实例,就是一个SQL Server数据库引擎。SQL Server 2000支持在同一台计算机上同时运行多个SQL Server数据库引擎实例。每个SQL Server数据库引擎实例各有一套不为其他实例共享的系统及用户数据库。应用程序连接同一台计算机上的SQL Server数据库引擎实例的方式与连接其他计算机上运行的SQL Server数据库引擎的方式基本相同。由于实例各有一套不为其他实例共享的系统及用户数据库,所以各实例的运行是独立的,一个实例的运行不会受其他实例 运行的影响,也不会影响其他实例的运行。在一台计算机上安装多个SQL Server实例,就相当于把这台计算机模拟成多个数据库服务器,而且这些模拟的数据库服务器是独立且同时运行的。
实例包括默认实例和命名实例两种。一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同,修改计算机名会同步修改默认实例名 SQL Server 7.0只能被安装为默认实例,在修改计算机名后,会导致SQL Server服务无法启动,需要执行SQL Server安装程序进行自动修复才能解决启动问题),客户端连接默认实例时,将使用安装SQL Server实例的计算机名。
在同一台计算机上安装SQL Server 7.0SQL Server 2000时,由于SQL Server 7.0只能安装为默认实例,所以应该先安装SQL Server 7.0,将SQL Server 2000安装为命名实例。或者在安装SQL Server 2000的时候,指定安装为命名实例。

一台计算机上可以安装多个命名实例,客户端连接命名实例时,必须使用以下计算机名称与命名实例的实例名组合的格式:
computer_name\instance_name

2、客户端如何与SQL Server交互

从客户端发送Transact-SQL语句到SQL Server服务器,到服务器处理完成并将结果返回给客户端的完整过程如下:
1)用于SQL ServerMicrosoft OLE DB提供程序、SQL Server ODBC驱动程序或DB-Library DLL生成TDS数据包。
2TDS数据包被传递给SQL Server客户端Net-Library
3)客户端Net-LibraryTDS数据包封装为网络协议数据包。
4)在服务器上,服务器Net-Library接收网络协议数据包。并且由ODSOpen Data Services)负责析取TDS数据包,并将结果传递给关系数据库服务器。
5)关系数据库服务器负责处理TDS数据包的内容。
6)如果需要将结果返回给客户端时,则由ODS将处理结果生成TDS数据包,并传递给服务器Net-Library
7)服务器Net-Library负责TDS数据包封装为网络协议数据包,然后传递回客户端Net-Library
8)客户端Net-Library将网络协议数据还原成TDS数据包,并转给上层的数据库接口,例如Microsoft OLE DB提供程序、SQL Server ODBC驱动程序或DB-Library DLL等。
9Microsoft OLE DB提供程序、SQL Server ODBC驱动程序或DB-Library DLLTDS数据包还原为应用程序可以接受的结果集
无论存取SQL Server的应用程序是否与SQL Server实例在同一台单机上,应用程序与SQL Server实例通信都会经过上述过程。

3TDSNET-Library和网络协议

TDS(表格格式数据流协议):SQL Server使用一个称为表格格式数据流 (TDS) 的应用程序级协议进行客户端应用程序与 SQL Server 之间的通讯。TDS 数据包封装在 Net-Library 所使用的协议栈生成的数据包中。
例如,如果使用的是 TCP/IP 套接字 Net-LibraryTDS 数据包就封装在基础协议的 TCP/IP 数据包中。将结果集发送回应用程序的数据包的内容取决于是否在传递给数据库引擎的 Transact-SQL 语句中指定了 FOR XML
如果没有指定 FOR XML,数据库引擎将关系结果集发送回应用程序。TDS 数据包中包含结果行集,每行包括一列或多列,就像在 SELECT 语句的选择列表中指定的那样。
如果指定了 FOR XML,数据库引擎将 XML 文档以流的形式返回给应用程序。在 TDS 数据包中,XML 文档被格式化为单个的、长 Unicode 值,每个数据包的大小约为 4 KB
可以配置 SQL Server 数据包大小,即 TDS 数据包大小。大多数客户端上的 TDS 数据包大小默认为 4 KBDB-Library 应用程序默认为 512 字节),经过测试证明,在几乎所有的方案中,这是最佳的 TDS 数据包大小。TDS 数据包大小可以比基础协议中的数据包大。如果是这种情况,发送数据包的计算机上的协议栈自动将 TDS 数据包分解成适合协议数据包大小的单元,客户端计算机上的协议栈则在接收计算机上将 TDS 数据包重新组合在一起。

Net-Library和网络协议: SQL Server使用一个称为 Net-Library 的动态链接库 (DLL) 与特定的网络协议通讯。匹配的 Net-Library 对在客户端和服务器计算机上必须是活动的,才能支持所需的网络协议。
例如,若要使客户端应用程序能通过 TCP/IP 与特定的 SQL Server 实例通讯,必须在客户计算机上将客户端 TCP/IP 套接字 Net-Library (DBNETLIB.dll) 配置为与那台服务器连接,同时服务器 TCP/IP 套接字 Net-Library (SSNETLIB.dll) 必须在服务器计算机上监听。
对于一对 Net-Library,本身并不支持客户端/服务器连接。客户端和服务器也必须都运行支持 Net-Library 的协议栈。
例如,如果服务器 TCP/IP 套接字 Net-Library 在服务器计算机上监听,并且客户计算机上的客户端 TCP/IP 套接字 Net-Library 被配置成与那台服务器连接,那么,客户端只有在两台计算机上都安装了 TCP/IP 协议栈时才能连接到服务器上。
Net-LibrarySQL Server安装程序安装,而网络协议由操作系统安装程序安装。

4、服务器标识

当应用程序需要访问某个SQL Server实例的时候,必须要知道被服务器服务器的唯一标识。这就类似于找一个人,您必须知道要找的人叫什么名字,或者其他一些能在你查找的范围内,能唯一标识这个人的标志,比如身份证编号。
下面通过一些例子来说明常见的可用于访问 SQL Server 服务器标识:
1 连接本机上的 SQL Server 的默认实例有有效服务器标识可以是:
本机的计算机名称、(local)localhost127.0.0.1.、不指定服务器名、本机IP地址
2 连接本机上的 SQL Server 的命名实例有有效服务器标识可以是:
本机的计算机名称\实例名、.\实例名、本机IP地址\实例名
3 连接其他电脑上的 SQL Server 的默认实例有有效服务器标识可以是:
服务器的计算机名称、服务器的IP地址
4 连接其他电脑上的 SQL Server 的命名实例有有效服务器标识可以是:
服务器的计算机名称\实例名、服务器的IP地址\实例名

其他说明:
1 可以通过在 SQL Server 实例名称的开始处添加 tcp: np: lpc:、或 rpc: 来指定您的连接字符串中的协议,例如:tcp:jack
2 可以将一个端口号添加到连接字符串(例如 MyServer\MyInstance,1433),用于指定 SQL Server 实例正在侦听的特定端口
3 可以通过 SQL Server 的客户端网络实用工具,为要连接的 SQL Server 指定别名,以便使用简短且友好的名称来访问 SQL Server

5、登录ID与身份验证

登录ID是账户标识符,用来控制对任何SQL Server 2000系统的访问权限。SQL Server 2000只有在验证了指定的登录ID有效后,才完成连接。这种登录验证称为身份验证。
录属性中,有一个是默认数据库。当一个登录连接到SQL Server时,这个默认数据库就变成该连接的当前数据库,除非该连接请求指定另一个数据库作为当前数据库。
用于登录SQL Server的账户在SQL Server中(使用SQL Server身份验证)创建,或者在Windows NT 4.0Windows? 2000中创建并被授予登录权限(使用Windows身份验证)。
SQL Server实例必须验证每个连接请求所提供的登录ID是否具有访问该实例的权限。这一过程称为身份验证。SQL Server 2000使用两类身份验证:Windows身份验证和SQL Server身份验证。每一种身份验证都有不同类别的登录ID
Windows 身份验证
Windows身份验证的过程如下:
1SQL Server 2000 sysadmin固定服务器角色成员必须首先向SQL Server 2000指定所有允许连接到SQL Server 2000Windows NTWindows 2000账户或组。当使用Windows身份验证时,在连接到SQL Server 2000时不必指定登录ID或密码。用户对SQL Server 2000的访问权限由Windows NTWindows 2000账户或组控制,当登录到客户端上的Windows操作系统时需接受身份验证。
2)客户端使用有效的Windows账户成功登录Windows后,Windows打开信任连接。信任连接的属性包括打开连接的客户端的Windows NTWindows 2000组及用户账户。
3)当客户端连接到SQL Server 2000时,SQL Server 2000客户端软件向SQL Server 2000请求Windows信任连接,SQL Server 2000从信任连接属性中得到用户的账户信息,并将它们与定义为有效SQL Server 2000登录的Windows账户相匹配。如果SQL Server 2000找到匹配的项,则接受这个连接,否则不接受这个连接。
当使用Windows 2000身份验证连接到SQL Server 2000时,Windows NTWindows 2000组或用户账户就是登录的用户标识(登录ID)。
SQL Server身份验证
SQL Server身份验证的过程如下:
1sysadmin固定服务器角色成员首先向SQL Server 2000指定所有有效的SQL Server 2000登录账户和密码。这些登录账户和密码与用户的Windows账户或网络账户无关。
2)当连接到SQL Server 2000时,用户必须提供SQL Server 2000登录账户和密码。系统将通过用户的SQL Server 2000登录账户在SQL Server 2000中标识用户。

注意:
Windows 98Windows me系统中安装的SQL Server仅支持SQL Server用户。

添加用于Windows身份验证登录ID的方法如下:
1 Windows用户
理工具--计算机管理--用户和组--右键用户--新建用户--建立一个登陆windows的用户
2 SQL Server中授予其登录的权限
企业管理器--SQL实例--安全性--右键登录--新建登录
--[常规],"名称"后的"..."按纽,选择上面建立的用户
--"身份验证"选择"windows身份验证"
--""选择用户所在的域
--"安全性访问"选择"允许访问"
--确定
3 登录
注销windows,用你新建的用户登陆操作系统.
然后查询分析器登陆SQL,连接时的身份验证选择"windows身份验证"
这时登陆的用户就是新建的用户了.

添加用于SQL Server身份验证登录ID的方法如下:
企业管理器--SQL实例--安全性--右键登录--新建登录
--[常规],"名称"中输入用户名
--"身份验证"选择"sql server身份验证",输入该用户的密码
--确定,再次输入密码

6、身份验证模式

SQL Server支持两种身份验证模式:
1 Windows
该种方式仅允许授予登录权限的合法Windows账户访问SQL ServerSQL Server用户将被禁止登录。
2SQL Server Windows
该种方式授予登录权限的合法Windows账户和SQL Server用户访问SQL Server

注意:
由于Windows 98Windows me系统仅支持SQL Server身份验证,因此只能使用“SQL Server Windows2000 ”的身份验证模式


设置SQL Server身份验证模式的方法如下:
可以在安装SQL Server时,设置设置SQL Server身份验证模式,在SQL Server安装完成后,可以通过下面的方法修改SQL Server身份验证模式:
企业管理器--右键SQL Server实例--属性
--[安全性]项中,选择Windows”或者“SQL Server Windows2000”
--确定
--重新启动SQL Server服务,使修改生效

7、解决常见的连接问题

7、解决常见的连接问题

. "SQL Server 不存在或访问被拒绝"

这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多,一般说来,有以下几种可能性:
1SQL Server名称或IP地址拼写有误
2、服务器端网络配置有误
3、客户端网络配置有误
要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.

============= 首先,检查网络物理连接 =============

ping <服务器IP地址/服务器名称>
如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等.
还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对ping,telnet 等的响应
因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口.

如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败
则说明名字解析有问题,这时候要检查 DNS 服务是否正常.
有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,
具体的方法是:
1、使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc.
添加一条IP地址与服务器名称的对应记录,如:172.168.10.24 myserver
2、或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明.

============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 =============

telnet <服务器IP地址> 1433
如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接
如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,
也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听.

==接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 ==

可以利用 SQL Server 自带的服务器网络使用工具来进行检查.
点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具
打开该工具后,"常规"中可以看到服务器启用了哪些协议.
一般而言,我们启用命名管道以及 TCP/IP 协议.
点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置
一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接.

============= 接下来我们要到客户端检查客户端的网络配置 =============

我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,
所不同的是这次是在客户端来运行这个工具.
点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具
打开该工具后,"常规"项中,可以看到客户端启用了哪些协议.
一般而言,我们同样需要启用命名管道以及 TCP/IP 协议.
点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致.
单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称,
连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处.
通过以上几个方面的检查,基本上可以排除第一种错误.

. "无法连接到服务器,用户xxx登陆失败"

该错误产生的原因是由于SQL Server使用了" Windows"的身份验证方式, 因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法如下所示:
1、在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server
操作步骤:
在企业管理器中
--右键你的服务器实例(就是那个有绿色图标的)
--编辑SQL Server注册属性
--选择"使用windows身份验证"
--选择"使用SQL Server身份验证"
--登录名输入:sa,密码输入sa的密码
--确定
2、设置允许SQL Server身份登录
操作步骤:
在企业管理器中
--展开"SQL Server",鼠标右键点击SQL Server服务器的名称
--选择"属性"
--再选择"安全性"选项卡
--"身份验证",选择"SQL Server Windows ".
--确定,并重新启动SQL Server服务.
在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,那就通过修改注册表来解决此问题:
1、点击"开始"-"运行",输入regedit,回车进入注册表编辑器
2、依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3、在屏幕右方找到名称"LoginMode",双击编辑双字节值
4、将原值从1改为2,点击"确定"
5、关闭注册表编辑器
6、重新启动SQL Server服务.
此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,
但是仍然无法使用Windows身份验证模式来连接SQL Server.
这是因为在 SQL Server 中有两个缺省的登录帐户:
BUILTIN\Administrators
<机器名>\Administrator 被删除.
要恢复这两个帐户,可以使用以下的方法:
1、打开企业管理器,展开服务器组,然后展开服务器
2、展开"安全性",右击"登录",然后单击"新建登录"
3、在"名称"框中,输入 BUILTIN\Administrators
4、在"服务器角色"选项卡中,选择"System Administrators"
5、点击"确定"退出
6、使用同样方法添加 <机器名>\Administrator 登录.

说明:,以下注册表键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值决定了SQL Server将采取何种身份验证模式.
1、表示使用"Windows 身份验证"模式
2、表示使用混合模式(Windows 身份验证和 SQL Server 身份验证).

.、提示连接超时
如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错.
这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误.
要解决这样的错误,可以修改客户端的连接超时设置.
默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因).
具体步骤为:
企业管理器中的设置:
1、在企业管理器中,选择菜单上的"工具",再选择"选项"
2、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡
3、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字, 20.
查询分析器中的设置:
工具 -- 选项 -- 连接 -- 将登录超时设置为一个较大的数字

8、服务

当安装好SQL Server后,其实是在系统中加入了许多服务应用程序,彼此分工合作,配合完成各种数据处理,了解这些服务的作用,会有利于更好的使用和管理SQL Server。具体的说明如下表所示。



SQL Server 2000的各种服务和功能说明

MSSQLSERVER

sqlserver.exe

SQL Server中最重要的服务,只要启动了它,就可以完成大部分的数据库处理。它负责数据存取、安全配置、事务管理等

SQLSERVERAGENT

sqlagent.exe

负责调度定期执行的活动(如数据库维护、备份、复制等),以及通知系统管理员服务器所发生的问题。如果不需要做这些处理工作,可以停止此服务

Microsoft Search

mssearch.exe

提供数据库内全文检索的功能,让用户可以针对数据字段的内容以全文检索的方式查询,而非一般SQL语法提供的Like关键字过滤。这对于在大量文本的字段中检索某些关键字的情况下,比Like更有效率。需要注意的是,要进行全文检索的话,需要进行全文检索配置。如果没有全文检索的需要,可以停止此服务

Distributed Transaction CoordinatorMSDTC

msdtc.exe

是一个事务管理器,它允许客户端应用程序在一个事务中包含多个不同的数据源。MSDTC协调在所有已在事务中登记的服务器间提交的分布式事务,以确保所有服务器上的全部更新为永久性的,或在发生错误时删除所有更新。简单地说,如果只在一个SQL Server实例内执行有事务的工作,则SQL Server自己可以处理,如果需要跨到其他的程序,就算是另一个SQL Server的执行实例,都需要通过MSDTC来协调完成事务。如果没有跨到其他程序的事务处理,可以停止此服务