ImageVerifierCode 换一换
格式:DOC , 页数:80 ,大小:2.70MB ,
资源ID:4481002      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4481002.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(详解MySQL数据库安全配置优质资料.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

详解MySQL数据库安全配置优质资料.doc

1、详解MySQL数据库安全配置优质资料(可以直接使用,可编辑 优质资料,欢迎下载)详解MySQL数据库安全配置.MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,特别是与php更是黄金组合,运用十分广泛。由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加

2、固。作为一个MySQL的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全,另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。系统内部安全首先简单介绍一下MySQL数据库目录结构。MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。如果我们用MySQL源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。MySQL是用数据库名在

3、数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。MySQL的授权表给数据库的访问提供了灵活的权限控制,但是如果本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到自己本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机的安全性是最首要的问题,如果主机不安全,被攻击者控制,那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性,也就是权限设置问题。从MySQL主站一些老的binary发行版来看,3.21.xx版本中数据目录的属性是775,这样非常危险,任何本地用户都可

4、以读数据目录,所以数据库文件很不安全。3.22.xx版本中数据目录的属性是770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。3.23.xx版本数据目录的属性是700,这样就比较好,只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。如果启动MySQL数据库的用户是mysql,那么象如下的目录和文件的是安全的,请注意数据目录及下面的属性:shellls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb

5、 27 20:07 includedrwxrwxr-x 2 root root 4096 Feb 27 20:07 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 mandrwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-testdrwxrwxr-x 3 root root 4096 Feb 27 20:07 sharedrwxr

6、wxr-x 7 root root 4096 Feb 27 20:07 sql-benchdrwx- 4 mysql mysql 4096 Feb 27 20:07 varshellls -l /usr/local/mysql/vartotal 8drwx- 2 mysql mysql 4096 Feb 27 20:08 mysqldrwx- 2 mysql mysql 4096 Feb 27 20:08 testshellls -l /usr/local/mysql/var/mysqltotal 104-rw- 1 mysql mysql 0 Feb 27 20:08 columns_PRi

7、v.MYD-rw- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI-rw- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm-rw- 1 mysql mysql 302 Feb 27 20:08 db.MYD-rw- 1 mysql mysql 3072 Feb 27 20:08 db.MYI-rw- 1 mysql mysql 8982 Feb 27 20:08 db.frm-rw- 1 mysql mysql 0 Feb 27 20:08 func.MYD-rw- 1 mysql mysql

8、1024 Feb 27 20:08 func.MYI-rw- 1 mysql mysql 8641 Feb 27 20:08 func.frm-rw- 1 mysql mysql 0 Feb 27 20:08 host.MYD-rw- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw- 1 mysql mysql 8958 Feb 27 20:08 host.frm-rw- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD-rw- 1 mysql mysql 1024 Feb 27 20:08 tables_priv

9、.MYI-rw- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm-rw- 1 mysql mysql 428 Feb 27 20:08 user.MYD-rw- 1 mysql mysql 2048 Feb 27 20:08 user.MYI-rw- 1 mysql mysql 9148 Feb 27 20:08 user.frm如果这些文件的属主及属性不是这样,请用以下两个命令修正之:shellchown -R mysql.mysql /usr/local/mysql/varshellchmod -R go-rwx /usr/local/mys

10、ql/var用root用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL从版本开始时作了小小的改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。如果非要用root用户来启动,必须加上-user=root的参数(./safe_mysqld -user=root &)。因为MySQL中有LOAD DATA INFILE和SELECT . INTO OUTFILE的SQL语句,如果是root用户启动了MySQL服务器,那么,数据库用户就拥有了root用户的写权限。不过MySQL还是做了一些限制的,比如LOAD DATA I

11、NFILE只能读全局可读的文件,SELECT . INTO OUTFILE不能覆盖已经存在的文件。本地的日志文件也不能忽视,包括shell的日志和MySQL自己的日志。有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如:shell/usr/local/mysql/bin/mysqldump -uroot -ptest testtest.sqlshell/usr/local/mysql/bin/mysql -uroot -ptest这些命令会被shell记录在历史文件里,比如bash会写入用户目录的.bash_history文件,如果这些文件不慎被读,那

12、么数据库的密码就会泄漏。用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。另外这两个文件我们也应该不让它记录我们的操作,以防万一。shellrm .bash_history .mysql_historyshellln -s /dev/null .bash_historyshellln -s /dev/null .mysql_history上门这两条命令把这两个文件链接

13、到/dev/null,那么我们的操作就不会被记录到这两个文件里了。外部网络安全MySQL数据库安装好以后,Unix平台的user表是这样的:mysql use mysql;Database changedmysql select Host,User,PassWord,Select_priv,Grant_priv from user;+-+-+-+-+-+| Host | User | Password | Select_priv | Grant_priv |+-+-+-+-+-+| localhost | root | | Y | Y | redhat | root | | Y | Y | l

14、ocalhost | | | N | N | redhat | | | N | N |+-+-+-+-+-+4 rows in set (0.00 sec)Windows平台的user表是这样的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;+-+-+-+-+-+| Host | User | Password | Select_priv | Grant_priv |+-+-+-+-+-+| localhost | root | | Y | Y |

15、 % | root | | Y | Y | localhost | | | Y | Y | % | | | N | N |+-+-+-+-+-+4 rows in set (0.00 sec)我们先来看Unix平台的user表。其中redhat只是我试验机的机器名,所以实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法:1)在shell提示符下用mysqladmin命令来改root用户口令:shellmysqladmin -uroot password test这样,MySQL数据库roo

16、t用户的口令就被改成test了。(test只是举例,我们实际使用的口令一定不能使用这种易猜的弱口令)2)用set password修改口令:mysql set password for rootlocalhost=password(test);这时root用户的口令就被改成test了。3)直接修改user表的root用户口令:mysql use mysql;mysql update user set password=password(test) where user=root;mysql flush privileges;这样,MySQL数据库root用户的口令也被改成test了。其中最后一

17、句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登陆,直到重启MySQL服务器。我们还看到user为空的匿名用户,虽然它在Unix平台下没什么权限,但为了安全起见我们应该删除它:mysql delete from user where user=MySQL数据库性能优化的关键参数MySQL性能优化涉及到很多方面,本文就一些MySQL中的关键参数进行解说,这些参数在一定程度上是决定MySQL数据库的性能关键参数。 我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化。通过在网络上查找资料

18、和笔者自己的尝试,我认为以下系统参数是比较关键的:关键参数一:back_log要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值 对到来的TCP/ip连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。当你观察你的主机进程列表,发现大量 264084

19、| unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值了。默认数值是50,我把它改为500。关键参数二:interactive_timeout服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把它改为7200。关键参数三:key_buffer_size索引块是缓冲的并且被所有的线程共享。key_bu

20、ffer_size是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你 能负担得起那样多。如果你使它太大,系统将开始换页并且真的变慢了。默认数值是8388600(8M),我的MySQL主机有2GB内存,所以我把它改为 402649088(400MB)。关键参数四:max_connections允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100,我把它改为1024 。关键参数五:record_buffer每个进行一个顺序扫描的线程为其扫描的每张

21、表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K),我把它改为16773120 (16M)关键参数六:sort_buffer每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。默认数值是2097144(2M),我把它改为 16777208 (16M)。关键参数七:table_cache为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个文件描述符。默认数值是64,我把它改为512。关键参数八:thread_cache_size可以复用的保

22、存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高性能可 以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。我把它设置为 80。关键参数九:wait_timeout服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800,我把它改为7200。注:参数的调整可以通过修改 /etc/my f 文件并重启 MySQL 实现。这是一个比较谨慎的工作,上面的结果也仅仅是我的一些看法,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改。mys

23、ql 视图操作和存储过程1.MySQL 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图。这样也可以提高查询的效率。 视图还有个好处就是,你如果改变了基数据表的字段或者值,视图表也会随着改 变,所以我们不用去担心,改变基数据的字段值时候担心视图的数据不同步的问题。例如:创建视图,然后通过视图来查询。create view v3 as SELECT b.sid, b.grade, c ameFROM grade b, course cWHERE b.cid = c.

24、cid然后查询从视图中查询出一条数据select sid,grade,cname from v3 where sid=200410001这样是不是更好理解点,不要再一次使用联合查询去查询某条数据。2存储过程,这 个操作可以使数据库操作更加的简洁,数据操作的重用性也得到了更好的体现,存储过程可以实现多表的操作,还有他他允许传入参数。具体的操作可以参考手册。这 两个sql特征 可以在我们具体在实际开发灵活应用,也许可以改变一下我们过去一些不合理的数据库操作,可以使我们写的程序更加的合理,更加的易于维护。 自动输出SQL Server对象依赖列表到EXCEL文件前言类似的软件很多年前写过,不过现在在

25、新国家,新环境,印度佬(我囧)资深系统分析员要求我:给现有的数据库的所有存储过程分别列举所有依赖的对象。需求现在数据库很老很大,表不多,200来个,但数据量很大:最大的数据表2亿6千万条,每天增加50多w,925个存储过程。系统大,耦合度很高,牵一发而动全身。人员变动频繁,接手的人员要在修改之前,就得花相当长的时间来分析关联性。所以,印度资深系统分析员要求我在一个Excel文件中,把925个存储过程的所有依赖的对象(表、函数、视图、存储过程等等)都列举出来。分析手工逐个打开存储过程去做,对写软件的人来说是很傻的事情,一般重复性工作,如果预计耗时超过3分钟,我就会卷起袖子写个代码。工作内容有3部

26、分:1.获取所有的存储过程。我们可以用sysobjects这个系统表,它存储了所有的表、存储过程、视图、函数等。其中存储过程的xtype是P,CLR存储过程,类型是PC;函数的类型是FN/IF或TF,CLR函数类型是FS;视图类型是V;表类型是U。2. 获取某存储过程所依赖的对象,当然是先google了。很久之前我就知道可以用系统存储过程sp_depends来获取,不过还是应该看看还有什么更好的办法。首先我发现这个: :/ mssqltips /tip.asp?tip=1294 。作者研究出4种办法:INFORMATION_SCHEMA.ROUTINES/sp_depends/syscomme

27、nts/sp_MSdependencies。其中就有我一直在用的sp_depends。其它办法有的霸王硬上弓:用charindex来遍历存储过程内容,或者用LIKE来判断。我服了,写代码的风格千差万别,一些是Foo,一些是Foo,而且不同的存储过程名称可能存在完全给另外一个包含,譬如Foo Foo1 AFoo等。看完之后,我还是觉得使用sp_depends相对靠谱。为什么说“相对靠谱”呢?因为我发现它某些情况下也会没有返回所有依赖的,这应该是SQL Server的bug吧?如果要把所有依赖都找回来,你可以去修改被遗忘的引用存储过程,随便加个空行,运行(就是保存结果),你会发现之前没有显示的依赖

28、终于出现了。而且,sp_depends会输出重复的记录。所以我们在代码中要剔除掉。3. 既然是输出到EXCEL文件,我们就需要找相应的代码。在这个网站已经有很多EXCEL文件生成的代码了,譬如NPOI。我最后采用了GemBox的,因为够轻便。本来想用更轻便的MyXLS,但发现它不支持单背景色。当然你也可以用别的,譬如xml格式的EXCEL文件,这是你个人的选择了。解决了上述的3个问题,我们就可以大干一场了。我用VS2005+C#2.0,因为公司还是在用古老的XP搭配VS2005,鬼佬国家要求什么都正版,自然不会像我们在中国那样随便就升级到2021了。所以只能放弃LINQ,老老实实地写老派的代码

29、了。以下代码没有什么特别的,都是循环所有存储过程,然后循环每个存储过程的依赖对象,然后排序输出(先按照类型,然后按照名称)。本来想用DataTable.Select对多个字段排序,但后来发现没效果,也没心思去研究为什么,干脆就改成写一个IComparer。代码写得很quick and dirty,10来分钟的事情,不要跟代码规范较真。代码(让你容易找点。)代码 using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Drawing;using System.Data

30、;using System.Data.SqlClient;using GemBox.SPReadsheet;namespace SQLServerDocumenter class Program static void Main(string args) if (args.Length = 0) args = new string4; args0 = database; args1 = datasource; args2 = user; args3 = passWord; string db = args0; string dataSource = args.Length 1 ? args1

31、: string.Empty; string user = args.Length 2 ? args2 : string.Empty; string password = args.Length 3 ? args3 : string.Empty; Work work = new Work(); work.Progress += new EventHandler(OnWorkProgress); work.Run(db, dataSource, user, password); Console.WriteLine(); Console.WriteLine(all done!); Console.

32、Read(); private static void OnWorkProgress(object sender, ProgressEventArgs e) Console.WriteLine(e.Status); public class Work public event EventHandler Progress; public void Run(string Database, string DataSource, string UserName, string Password) ExcelFile xls = new ExcelFile(); ExcelWorksheet shee

33、t = xls.Worksheets.Add(Dictionary); CellStyle nameStyle = new CellStyle(xls); nameStyle.FillPattern.SetSolid(Color.DarkGray); nameStyle.Font.Color = Color.Black; nameStyle.Font.Weight = ExcelFont.BoldWeight; sheet.Cells0, 0.Value = string.Format(0 database dictionary, Database); sheet.Cells4, 0.Valu

34、e = Name; sheet.Cells4, 0.Style = nameStyle; sheet.Cells4, 1.Value = Dependencies; sheet.Cells4, 1.Style = nameStyle; sheet.Cells4, 2.Value = Type; sheet.Cells4, 2.Style = nameStyle; string connectionString = string.Format(Password=0;Persist Security Info=True;User ID=1;Initial Catalog=2;Data Source

35、=3, Password, UserName, Database, DataSource); using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); int index = 5; AddObjects(connection, P, Stored Procedures, new List(new string sp_alterdiagram, sp_creatediagram, sp_dropdiagram, sp_helpdiagramdefinition, sp_help

36、diagrams, sp_renamediagram, sp_upgraddiagrams ), sheet, ref index); AddObjects(connection, FN,IF,TF, Functions, new List(), sheet, ref index); AddObjects(connection, V, Views, new List(), sheet, ref index); connection.Close(); string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecuti

37、ngAssembly().Location) + + Database + .xls; xls.SaveXls(path); private void AddObjects(SqlConnection Connection, string Types, string Name, List IgnoreNames, ExcelWorksheet Sheet, ref int Index) CellStyle itemStyle = new CellStyle(); itemStyle.FillPattern.SetSolid(Color.LightGray); itemStyle.Font.Co

38、lor = Color.Black; itemStyle.Font.Weight = ExcelFont.BoldWeight; CellStyle typeStyle = new CellStyle(); typeStyle.FillPattern.SetSolid(Color.Yellow); typeStyle.Font.Color = Color.Black; typeStyle.Font.Weight = ExcelFont.BoldWeight; Sheet.CellsIndex, 0.Value = Name; Sheet.CellsIndex, 0.Style = typeSt

39、yle; Index+; DataSet data = new DataSet(); using (SqlCommand command = new SqlCommand(string.Format(SELECT * FROM sysobjects WHERE XTYPE IN (0) ORDER BY NAME, Types), Connection) SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(data); if (data.Tables.Count 0) DataTable objects = da

40、ta.Tables0; for (int i = 0; i objects.Rows.Count; i+) string objectName = objects.Rowsiname.ToString(); if (!IgnoreNames.Contains(objectName) Sheet.CellsIndex, 0.Value = objectName; Sheet.CellsIndex, 0.Style = itemStyle; DataSet data2 = new DataSet(); using (SqlCommand command2 = new SqlCommand(string.Format(exec sp_depends 0, objectName), Connection)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服