mssql使用总结
重设密码
exec sp_password null,'新密码','sa'
执行系统命令
(1)exec xp_cmdshell '要执行的命令'
(2)declare @shell int
exec sp_oacreate 'wscript.shell',@shell out
exec sp_oamethod @shell ,'run',null,'要执行的系统命令'
exec sp_oamethod @shell ,'run',null,'c:\windows\system32\cmd.exe /c net user kkk zzz /add'
exec sp_oamethod @shell ,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators kkk /add'
(3)use msdb;
exec sp_add_job @job_name='ok1';
exec sp_add_jobstep @job_name='ok1',@step_name = 'okok',@subsystem='CMDEXEC',@command='net user ok 123 /add';
exec sp_add_jobserver @job_name = 'ok1',@server_name = 'WWW-84937FCF932';
exec sp_start_job @job_name='ok1'
(4)exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0--开启沙盘模式
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode'--查看沙盘模式的状态
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user 123 321 /add")');--建立一个用户名为123的用户
1.如果沙盒保护模式未"关闭",会报错:
服务器: 消息 7357,级别 16,状态 2,行 1
未能处理对象 'select shell("cmd.exe /c net user user passwd /add")'。OLE DB 提供程序 'microsoft.jet.oledb.4.0' 指出该对象中没有任何列。
OLE DB 错误跟踪[Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user passwd /add")']。
2.如果.mdb不存在或是输入路径错误
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'microsoft.jet.oledb.4.0' 报错。
[OLE/DB provider returned message: 找不到文件 'C:WINDOWSsystem32iasdnary1.mdb'。]
OLE DB 错误跟踪[OLE/DB Provider 'microsoft.jet.oledb.4.0' IDBInitialize::Initialize returned 0x80004005: ]。
3.如果输入过程中多了一些空格,也会报错。尤其要注意这点,很多人直接网上找文章复制粘贴进去执行。
服务器: 消息 7357,级别 16,状态 2,行 1
未能处理对象 'select shell("cmd.exe /c net user user passwd /add")'。OLE DB 提供程序 'microsoft.jet.oledb.4.0' 指出该对象中没有任何列。
OLE DB 错误跟踪[Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='microsoft.jet.oledb.4.0', Query=select shell("cmd.exe /c net user user passwd /add")']。
4.如果mdb权限和cmd.exe权限不对,同样会也出现问题。
当mdb权限不对时,
服务器: 消息 7320,级别 16,状态 2,行 1
未能对 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 执行查询。
[OLE/DB provider returned message: 未知]
OLE DB 错误跟踪[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' ICommandText::Execute returned 0x80040e14]
查看用户权限
sp_helprotect null,'用户名'
打开sql2005的xp_cmdshell
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO
--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO
--用完后,要记得将xp_cmdshell禁用(从安全角度安全考虑)
-- 禁用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
--重新配置
RECONFIGURE
GO
-- 禁用配置高级选项
EXEC sp_configure 'show advanced options', 0
GO
-- 重新配置
RECONFIGURE
GO
查看mssql操作日志
SELECT * FROM fn_dblog(null,null)
附加数据库的命令
oSQL -U sa -P (回车)
1> sp_attach_db @dbname = N'xxx',
2>@filename1 = N'x:\xxx\xxx\xxx.mdf',
3>@filename2 = N'x:\xxx\xxx\xxx.ldf';
4>go
收缩数据库
dbcc shrinkdatabase('db_name')
扩展数据库文件
alter database db_customsms add file(NAME=db_customsms_data,FILENAME='D:\MSDE\MSSQL\Data\db_customsms_data3.mdf')
导出表中的数据为txt
bcp "Northwind.dbo.Customers" out "d:\customers.txt" -c -Usa -Psa
bcp "select * from Northwind" queryout "d:\customers.txt" -c -Usa -Psa
删除xp_cmdshell
EXEC sp_dropextendedproc 'xp_cmdshell'
恢复xp_cmdshell
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
获取当前服务器系统时间
select getdate() from 任意一张表的名称
恢复xp_cmdshell
dbcc addextendedproc ("xp_cmdshell","xplog70.dll")
查看数据库连接
select @@connections
exec sp_who 'active'
增加mssql缓存
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'max server memory',512
reconfigure
查看当前所使用数据库所在的路径
select * from sysfiles;
恢复sp_addextendedproc语句:
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/ (owner.)name of function to call /
@dllname varchar(255)/ name of DLL containing function /
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO
恢复sp_dropextendedproc 语句:
create procedure dbo.sp_dropextendedproc
@functname nvarchar(517) -- name of function
as
-- If we're in a transaction, disallow the dropping of the
-- extended stored procedure.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_dropextendedproc')
return (1)
end
-- Drop the extended procedure mapping.
dbcc dropextendedproc( @functname )
return (0) -- sp_dropextendedproc
恢复 sp_OACreate 语句
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
替换记录中的字符
REPLACE ( original-string, search-string, replace-string )
这个函数有一点不足是不支持 text,ntext类型字段的替换,可以通过下面的语句来实现:
update tableName set recordName=replace(cast(recordName as varchar(8000)) ,'abc','ddd')
导出execl表格
exec xp_cmdshell 'bcp "select *或列名1,列名2 from 库名.所有者.表名" queryout "c:\文件名.xls" -c -q -S "主机名" -U "用户名" -P "密码"'
装sql server sp4时,出现以前进行的程序安装创建了挂起的文件操作.运行程序之前,必须重新起动计算机
在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileRenameOperations.