用友维护常用SQL语句脚本上篇Word格式.docx
- 文档编号:7976674
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:21.61KB
用友维护常用SQL语句脚本上篇Word格式.docx
《用友维护常用SQL语句脚本上篇Word格式.docx》由会员分享,可在线阅读,更多相关《用友维护常用SQL语句脚本上篇Word格式.docx(15页珍藏版)》请在冰点文库上搜索。
cUnitLPas
法人
cEntTypeas
企业类型
cTradeKindas
行业类型
cIsCompanyVeras
是否集团版
cDomainas
域名
cDescxriptionas备注
cOrgCodeas机构编码
iSysIDas账套内部标识
fromua_account
--帐套子表
selectcAcc_Idas账套号
iYearas账套年度
cSub_Idas模块标识
bIsDeleteas是否删除
bClosingas是否关闭
iModiPerias会计期间
dSubSysUsedas启用会计日期
cUser_Idas操作员
dSubOriDateas启用自然日期
fromua_account_sub
--当客户的数据在其它机器上做的升级然后拷回到原机器
/*拷回的数据,通过‘系统管理’在原机器上引入后,并不会在
ufsystem数据库中的ua_account_sub这个帐套子表中回写上一年度的bClosing字段来关闭上一年度
*/
--比如002帐套结转后年度为2010则用于关闭上一(2009)年度的sql如下:
select*fromua_account_subwherecAcc_Id='
002'
andiYear=2008
updateua_account_subsetbclosing=0
wherecAcc_Id='
--清除异常任务及单据锁定
deletefromua_task
deletefromua_tasklog
deletefromufsystem..ua_task
deletefromufsystem..ua_tasklog
Select*
Fromua_task
Where(cacc_id='
***'
)
--注:
(***为账套号)
--科目锁定的解决
/*XX科目已经被用户[XX]锁定”
或“科目(xxxxxx)正在被机器(xxxx)上的用户(xxx)进行(xxxx)操作锁定请稍候再试”。
useUFDATA_002_2008
ccodeas科目编码
cauthas功能名称
cuseras用户名
cmachineas机器名
fromGL_mccontrol
deletefromGL_mccontrol
--如何取得一个数据表的所有列名
/*
方法如下:
先从SYSTEMobxject系统表中取得数据表的SYSTEMID然后再SYSCOLUMN表中取得该数据表的所有列名。
SQL语句如下:
/*(方法一*/
select*fromufsystem..ua_account
select*fromsyscolumnswhereid=obxject_id('
ua_account'
)
declare@objidint@objnamechar(40)
set@objname='
select@objid=idfromsysobxjectswhereid=obxject_id(@objname)
select'
Column_name'
=namefromsyscolumnswhereid=@objidorderbycolid
/*(方法二(邹建)*/
---跟踪程序的运行就可以了.
/*
开始--程序--MS
SQLSERVER
--事件探察器(SQL
Profiler)
--文件
--新建--跟踪...
--设置要跟踪的服务器的信息(连接服务器)--确定
--设置跟踪的项目...
--然后数据库的调用情况就会显示出来
在跟踪项目设置中如果不熟悉的话一般用默认设置
筛选项目有几个可以注意一下:
1.DatabaxseName
同于你要监测的数据库名(不过这个好像不起作用我的电脑上设置无效)
2.DatabaxseID
同于你要检测的数据库的dbid可以用
select
db_id(N'
你要监测的库名'
)得到dbid
3.obxjectName
同于你要监测的对象名例如表名视图名等
4.obxjectID
同于你要监测的对象的id可以用
obxject_id(N'
你要监测的对象名'
)得到id
5.Error
同于错误如果经常出现某个编号的错误则针对此错误号
6.Seccess
同于0失败1成功如果是排错就过滤掉成功的处理
/*方法三:
--如果直接查询可以参考我的这段代码:
if
exists
(select
*
from
dbo.sysobxjects
where
id
=
[dbo].[p_search]'
and
obxjectPROPERTY(id
N'
IsProcedure'
1)
drop
procedure
[dbo].[p_search]
GO
/*--搜索某个字符串在那个表的那个字段中
--邹建
2004.10(引用请保留此信息)--*/
/*--调用示例
use
pubs
exec
p_search
l'
--*/
create
proc
@str
Nvarchar(1000)
--要搜索的字符串
as
@str
is
null
return
declare
@s
Nvarchar(4000)
table
#t(表名
sysname字段名
sysname)
tb
cursor
local
for
s='
exists(select
1
['
+replace(b.name'
]'
'
]]'
)+'
]
+a.name+'
like
%'
+@str+'
'
所在的表及字段:
+b.name+'
].['
from
syscolumns
a
join
sysobxjects
b
on
a.id=b.id
where
b.xtype='
U'
a.status>
=0
and
a.xtype
in(1752399935231167)
open
fetch
next
into
while
@@fetch_status=0
begin
exec(@s)
end
close
deallocate
go
--通过SQL语句来更改用户的密码
/*修改别人的需要sysadmin
role
EXEC
sp_password
NULL
newpassword'
User'
/*如果帐号为SA执行*/
sa
--通怎么判断出一个表的哪些字段不允许为空?
COLUMN_NAME
INFORMATION_SCHEMA.COLUMNS
IS_NULLABLE='
NO'
TABLE_NAME='
--如何在数据库里找到含有相同字段的表?
--a.查已知列名的情况
SELECT
b.name
TableNamea.name
columnname
From
syscolumns
a
INNER
JOIN
sysobxjects
b
ON
a.id=b.id
AND
b.type='
a.name='
cacc_id'
--本例如:
cacc_id列
--b.未知列名查所有在不同表出现过的列名
Select
o.name
As
tablenames1.name
s1
o
Where
s1.id
=
o.id
And
o.type
Exists
(
Select
1
s2
Where
s1.name
s2.name
<
>
s2.id
)
--查询第xxx行数据
--假设id是主键:
*
(select
top
xxx
yourtable)
aa
not
exists(select
xxx-1
bb
aa.id=bb.id)
--如果使用游标也是可以的
absolute
[number]
[cursor_name]
--行数为绝对行数
--SQLServer日期计算
/*a.一个月的第一天*/
DATEADD(mm
DATEDIFF(mm0getdate())
0)
/*b.本周的星期一*/
DATEADD(wk
DATEDIFF(wk0getdate())
0)
/*c.一年的第一天*/
DATEADD(yy
DATEDIFF(yy0getdate())
/*d.季度的第一天*/
DATEADD(qq
DATEDIFF(qq0getdate())
/*e.上个月的最后一天*/
dateadd(ms-3DATEADD(mm
0))
/*f.去年的最后一天*/
dateadd(ms-3DATEADD(yy
0))
/*g.本月的最后一天*/
DATEDIFF(m0getdate())+1
/*h.本月的第一个星期一*/
DATEDIFF(wk0
dateadd(dd6-datepart(daygetdate())getdate())
)
/*i.本年的最后一天*/
DATEDIFF(yy0getdate())+1
0))
1.显示本月第一天
SELECTDATEADD(mmDATEDIFF(mm0getdate())0)
selectconvert(datetimeconvert(varchar(8)getdate()120)+'
01'
120)
2.显示本月最后一天
selectdateadd(day-1convert(datetimeconvert(varchar(8)dateadd(month1getdate())120)+'
120))
SELECTdateadd(ms-3DATEADD(mmDATEDIFF(m0getdate())+10))
3.上个月的最后一天
SELECTdateadd(ms-3DATEADD(mmDATEDIFF(mm0getdate())0))
4.本月的第一个星期一
selectDATEADD(wkDATEDIFF(wk0dateadd(dd6-datepart(daygetdate())getdate()))0)
5.本年的第一天
SELECTDATEADD(yyDATEDIFF(yy0getdate())0)
6.本年的最后一天
SELECTdateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate())+10))
7.去年的最后一天
SELECTdateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate())0))
8.本季度的第一天
SELECTDATEADD(qqDATEDIFF(qq0getdate())0)
9.本周的星期一
SELECTDATEADD(wkDATEDIFF(wk0getdate())0)
10.查询本月的记录
select*fromtableNamewhereDATEPART(mmtheDate)=DATEPART(mmGETDATE())andDATEPART(yytheDate)=DATEPART(yyGETDATE())
11.查询本周的记录
select*fromtableNamewhereDATEPART(wktheDate)=DATEPART(wkGETDATE())andDATEPART(yytheDate)=DATEPART(yyGETDATE())
12.查询本季的记录
select*fromtableNamewhereDATEPART(qqtheDate)=DATEPART(qqGETDATE())andDATEPART(yytheDate)=DATEPART(yyGETDATE())
其中:
GETDATE()是获得系统时间的函数。
13.获取当月总天数:
selectDATEDIFF(ddgetdate()DATEADD(mm1getdate()))
selectdatediff(day
dateadd(mmdatediff(mm'
getdate())'
1900-02-01'
))
14.获取当前为星期几
DATENAME(weekdaygetdate())
/*查询数据库的所有用户表*/
useufdata_002_2008
name
type='
--查看数据库中所有的触发器
select*fromsysobxjectswherextype='
TR'
--查询特定数据库中某一不知归属表的触发器
/*查询某一个触发器TR_Ap_CloseBills所归属的表*/
@parent_obj_id
int
--定义父对象id变量
--先找出父对象(所在表)的id(在触发器不重复归属于多个表的情况下)
select@parent_obj_id=parent_obj
fromsysobxjectswherename='
TR_Ap_CloseBills'
andxtype='
print'
所在父对象(表)的ID是:
+str(@parent_obj_id)
--接下来找出父对象(表)的名称
selectnameas触发器所在表为
fromsysobxjectswhere
andid=@parent_obj_id
--查看触发器内容
execsp_helptext'
--用于查看触发器的属性(参数指定触发器所在的表)
execsp_helptriggerAp_CloseBills
--创建触发器
(1)创建一个简单的触发器
触发器是一种特殊的存储过程,类似于事件函数,SQLServer?
允许为INSERT、UPDATE、DELETE创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列T-SQL语句。
触发器可以在查询分析器里创建,也可以在表名上点右键->
“所有任务”->
“管理触发器”来创建,不过都是要写T-SQL语句的,只是在查询分析器里要先确定当前操作的数据库。
创建触发器用CREATETRIGGER
格式如下:
------------------------------
CREATETRIGGER触发器名称
ON表名
FORINSERT、UPDATE或DELETE
AS
T-SQL语句
注意:
触发器名称是不加引号的。
--如下是联机丛书上的一个示例,当在tixtles表上更改记录时,发送邮件通知MaryM。
CREATETRIGGERreminder
ONtixtles
FORINSERTUPDATEDELETE
EXECmaster..xp_sendmail'
MaryM'
Don'
tforgettoprintareportforthedistributors.'
(2)删除触发器
用查询分析器删除
在查询分析器中使用droptrigger触发器名称来删除触发器。
也可以同时删除多个触发器:
droptrigger触发器名称触发器名称...
在删除触发器之前可以先看一下触发器是否存在:
ifExists(
selectnamefromsysobxject
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用友 维护 常用 SQL 语句 脚本 上篇