加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver 将存储过程分别导出为文件及报错解决方式

发布时间:2020-12-12 14:28:37 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver 将存储过程分别导出为文件: DECLARE @s VARCHAR(4000),@n INT,@i INT,@s1 VARCHAR(100)SELECT IDENTITY(INT) id,text INTO ## FROM syscommentsSELECT @n=@@ROWCOUNT,@i=0WHILE @i@n BEGIN SELECT @i=@i+1,@s='' SELECT @s1=REPLACE(REPLACE(RTRIM
sqlserver 将存储过程分别导出为文件:
DECLARE @s VARCHAR(4000),@n INT,@i INT,@s1 VARCHAR(100)
SELECT IDENTITY(INT) id,text INTO ## 
    FROM syscomments
SELECT @n=@@ROWCOUNT,@i=0
WHILE @i<@n
    BEGIN
        SELECT @i=@i+1,@s=''
        SELECT @s1=REPLACE(REPLACE(RTRIM(LTRIM(STUFF(STUFF(text,CHARINDEX('AS',text),40000,''),1,CHARINDEX('PROC',STUFF(text,''))+4,''))),CHAR(10),CHAR(13),'')
            FROM ## WHERE ID=RTRIM(@i)
            --SELECT @s1,ASCII(SUBSTRING(@s1,3,1))
            --SELECT LEN(REPLACE(REPLACE(@s1,''))
        SELECT @s='SELECT text FROM tempdb.dbo.## WHERE ID=' + RTRIM(@i)
        EXEC('EXEC master..xp_cmdshell ''bcp "' + @s + ' "  queryout "e:ProcTXT' + @s1 + '.txt" -S"ROBINHOMESQLEXPRESS" -c -U"sa" -P"bd5178"''')
    END
DROP TABLE ##

?

?BCP常见问题集:

1.错误:Error = [Microsoft][SQL Native Client]Unable to open BCP host data-file.

 原因:用户对导入导出的文件夹没有足够的操作权限。

 解决方案:给用户添加足够权限来操作相关文件。

?

2.错误:Error = [Microsoft][SQL Native Client]String data,right truncation

 原因:字符串长度过长

 解决方案:检查数据长度是否超过表格设置,或者是否有正确的行结束标志。

?

3.错误:在SQL SERVER 2005 调用“sys.xp_cmdshell”过程对过期备份文件进行删除出现如下出错提示:
-----------------------------
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure.
?

原因:用户没有执行xp_cmdshell的权限

-----------------------------
SQL server 2005的默认安全策略关闭了用户对“sys.xp_cmdshell”的访问权限,用如下语句开启:
-----------------------------

sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
sp_configure 'xp_cmdshell',1
GO
RECONFIGURE
GO


------------------------------

另外,当你准备在SQL SERVER 2005中调用操作系统内置的smtp组件发送邮件时,可能也会收到如下错误提示:
--------------------------------
“SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭”
--------------------------------
同样道理,用如下语句开启Ole Automation Procedures的访问权限:
--------------------------------

sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
sp_configure 'Ole Automation Procedures'
GO
RECONFIGURE
GO

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读