declare为对变量进行声明,声明必须制定变量的数据类型,只能写在过程的前面set是对变量赋值,可以放在过程的任何地方对没有declare声明过的变量赋值,该变量必须以加上@号,否则会报错 DECLARE a INT; -- 如果放在下面语句之后,会报错 SET a = (SELECT id FROM tb); -- 如果没有前面的声明,会报错 SET @b = (SELECT title FROM tb);
use test go ALTER DATABASE test SET SINGLE_USER DBCC CHECKDB (test, repair_allow_data_loss) with NO_INFOMSGS go ALTER DATABASE test SET MULTI_USER go 对于单个数据库报错了,运行这个修复不行.后来我在tempdb运行才可以. dbcc checkdb('tempdb') 其实开始的时候还有另一个错误: 尝试在数据库 5 中提取逻辑页 (1:1640)
要删除所有的用户表: declare @sql varchar(8000) SELECT @sql='drop table ' + name FROM sysobjects WHERE (type = 'U') ORDER BY 'drop table ' + name exec(@sql) 如果要删除所有用户表中的内容,可以执行以下语句: declare @sql varchar(8000) SELECT @sql='truncate table ' + name FROM sysobject
存储过程的SQL代码: ALTER PROCEDURE USP_DBBackup ), --存储目录. ) --存储数据库名. AS SET NOCOUNT ON ) select @name = rtrim(ltrim(@name)) if exists (SELECT Name FROM Master..SysDatabases where name = 'PersonnelManagementSystem') --寻找指定的数据库. set @name= 'PersonnelManagem
/*对*dt库下的所有数据表删除docuemttype为空和documenttype为MD,PD,ET的数据:delete from 表名 where length(documenttype)<2 or documenttype is null or documenttype in ('et','md','pd'); */DELIMITER $$USE `数据库名称1`$$ DROP PROCEDURE IF EXISTS `存储过程名称1`$$CREATE PROCEDURE `存储过程名称1
定义表变量是可以直接操作在内存中的数据,比较快.临时表在大数据量时会比游标使用的资源少.还是要看具体情况了.也有可能在实际优化过程中相互替换呢. 留作记忆的代码如下: if object_id('tempdb..#Tmp') is not null Begin drop table #Tmp End create table #Tmp --创建临时表#Tmp为获取远程设备信息使用 ( deviceId ), deviceNo ), FlagID TINYINT ); declare @i int
MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @database
use 数据库名(是要删除表的所在的那个数据库的名称) GO ) begin SELECT @sql='drop table ' + name FROM sysobjects WHERE (type = 'U') ORDER BY 'drop table ' + name exec(@sql) end-----------------------------------------------use 数据库一定要填对哦......
Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权) 问题分析:数据库还原的时候还有其他进程连在上面,导致无法获得独占造成的. 解决方案: 一.切断连接进程 .查询要还原的数据库ID Select * from master..sysdatabases where name = ''; .获取该数据库的进程 Select * from sys.sysprocesses a where a.dbid = ''; .杀掉连接在上面的进程 kill @spid; 此时去还原一般
--返回由备份集内包含的数据库和日志文件列表组成的结果集. --主要获得逻辑文件名 USE master RESTORE FILELISTONLY FROM DISK = 'g:\back.Bak' Go ************************************************ /**//* 利用bak恢复数据库,强制还原(REPLACE) STATS = 10 每完成10%显示一条记录 DBTest和DBTest_log是上面g:\back.Bak里的逻辑文件 */ U