易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 :

转)简易SQL Server 备份方案


引:现在一些中小企业都广泛使用MS Windows NT 为网络操作系统平台,SQL Server 为后台数据库构建企业内部的各种管理系统,该成熟技术的普及,能有效地帮助企业对内部数据进行管理。这类应用中,对数据库的备份是很重要的一项工作,其重要性不必多言。
  其备份的方法很多,如:在一些规模较大、资金雄厚的企业,往往是采用双机冗余备份机制,即在同一个NT域使用两台服务器,一个是主域控制器,另一个是备份域控制器,两台服务器上都有SQL Server,在程序的运行过程中,不断地将主域控制器中的SQL数据库新数据更新到备份域控制器的SQL 数据库中。这种方案的缺点是,设备投资昂贵,对人员要求较高,不适合小型企业;SQLServer 系统本身也提供了备份手段,但使用起来很不方便,并且备份恢复时间较长,非专业人员很难使用;备份问题突出,利用第三方软件解决这个问题手段较多,但由于软件的投资、安全、版权等等诸多问题,而且常常是软件越多,兼容性越差,出现的问题越多,所以专业人士都建议,在条件允许的情况下尽可能不采用这些方法。
  我在1998 年就开始使用SQL Server数据库编制公司的营业管理数据库系统,根据我公司的具体情况采用一套简洁实用的备份体制,效果比 ......

sql server 中临时表与表变量的区别

 
我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量。在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢?
  临时表
  临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在。临时表在创建的时候都会产生SQL Server的系统日志,虽它们在Tempdb中体现,是分配在内存中的,它们也支持物理的磁盘,但用户在指定的磁盘里看不到文件。
  临时表分为本地和全局两种,本地临时表的名称都是以“#”为前缀,只有在本地当前的用户连接中才是可见的,当用户从实例断开连接时被删除。全局临时表的名称都是以“##”为前缀,创建后对任何用户都是可见的,当所有引用该表的用户断开连接时被删除。
  下面我们来看一个创建临时表的例子:  
       CREATE TABLE dbo.#News
  (
  News_id int NOT NULL,
  NewsTitle varchar(100),
  NewsContent v ......

如何用SQL语句在两个数据库间复制存储过程

 --1.在目标服务器上建立如下对象(被同步的服务器)  
   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[sys_syscomments_bak]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
  drop   table   [sys_syscomments_bak]  
  GO  
   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_process_object]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
  drop   procedure   [dbo].[p_process_object]  
  GO  
   
  --创建辅助处理的表  
  create   table   sys_syscomments_bak(name   sysname,xtype   char(2),number   smallint,colid   smallint,status   smallint,ctext   varbinary(8000) ......

如何用命令生成SQL SERVER脚本

如何用命令生成SQL   SERVER脚本  
   
  --以下生成整个数据库的SQL脚本,我测试了,相当好用。  
  --(scptxfr.exe的路径要正确以下是我的路径)  
  declare   @cMd   varchar(1000)  
  set   @cmd   =   'master.dbo.xp_cmdshell   '   +    
  '''c:\"Microsoft   '   +  
  'SQL   Server"'   +  
  '\MSSQL\Upgrade\scptxfr.exe   '   +  
  '   /s   YourServerName   /p   YourSAPassword   /I   /d   YourDBName   /f   '   +  
  'c:\YourDBName.sql'''  
  exec   (@cmd)  
   
  命令行语法:  
  SCPTXFR   /s   <服务器>   /d   <数据库>   {[/I]   |   [/P   <密码>]}  
  {[/F   <脚本文件目录>]   |   [/f   <单个脚本文件>]} & ......

Java 执行 SQL 脚本文件

是拷贝的别人的,以备学习
package com.unmi.db;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 读取 SQL 脚本并执行
* @author Unmi
*/
public class SqlFileExecutor {
/**
* 读取 SQL 文件,获取 SQL 语句
* @param sqlFile SQL 脚本文件
* @return List<sql> 返回所有 SQL 语句的 List
* @throws Exception
*/
private List<String> loadSql(String sqlFile) throws Exception {
List<String> sqlList = new ArrayList<String>();
try {
InputStream sqlFileIn = new FileInputStream(sqlFile);
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead));
}
// Windows 下换行是 \r\n, Linux 下是 \n
String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n) ......

Java 执行 SQL 脚本文件

是拷贝的别人的,以备学习
package com.unmi.db;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 读取 SQL 脚本并执行
* @author Unmi
*/
public class SqlFileExecutor {
/**
* 读取 SQL 文件,获取 SQL 语句
* @param sqlFile SQL 脚本文件
* @return List<sql> 返回所有 SQL 语句的 List
* @throws Exception
*/
private List<String> loadSql(String sqlFile) throws Exception {
List<String> sqlList = new ArrayList<String>();
try {
InputStream sqlFileIn = new FileInputStream(sqlFile);
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead));
}
// Windows 下换行是 \r\n, Linux 下是 \n
String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n) ......

尽量避免在SQL语句中使用LIKE

----start
    前面,我们介绍了 尽量避免在SQL语句的WHERE子句中使用函数,因为这样做会使该字段上的索引失效,影响SQL语句的性能。基于同样的道理,我们也应该避免使用LIKE。考虑下面的情况:
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
MYNUMBER VARCHAR(18)---身份证号码
); 
现在要求你把身份证号码开头是2102(大连人)查出来,怎么办?我们很自然的会这么写:
SELECT * from USER WHERE MYNUMBER LIKE '2102%'; 
上述语句完全正确,只可惜性能不好,那么到底如何处理呢?答案是将它转化为范围扫描,如下:
SELECT * from USER WHERE MYNUMBER>='210200000000000000' AND MYNUMBER<'210300000000000000'; 
---更多参见:DB2 SQL 精要
----声明:转载请注明出处。
----last update at 2009.9.24
----write by wave at 2009.9.24
----end ......
总记录数:40319; 总页数:6720; 每页6 条; 首页 上一页 [6515] [6516] [6517] [6518] 6519 [6520] [6521] [6522] [6523] [6524]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号