sqlcmd 命令使用

1,连接数据库及确认数据库正常运行

#连接数据库
[root@localhost ~]# sqlcmd -S localhost -U SA
Password: #数据密码

#显示系统数据库
1> select name,database_id from sys.databases;
2> go
name        database_id
---------   ------------                                                                                                                 
master       1                                                                                                                            
tempdb       2                                                                                                                            
model        3                                                                                                                              
msdb         4 


(4 rows affected)                                                                                                                             

显示系统用户

1> select name from sysusers;
2> go
name

------------------------------------------------------------------
------------------------------------------------
##MS_AgentSigningCertificate##

##MS_PolicyEventProcessingLogin##

db_accessadmin

db_backupoperator

db_datareader

db_datawriter

db_ddladmin

db_denydatareader

db_denydatawriter

db_owner

db_securityadmin

dbo

guest

INFORMATION_SCHEMA

public

sys


(16 行受影响)

显示当前的用户

1> select current_user;
2> go


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

dbo


(1 行受影响)

2,Transact-SQL 基本操作

【1】创建/删除数据库

#创建 "SampleDB" 数据库
1> create database SampleDB;
2> go
#带参数创建数据库
1> create  database SampleDB2
2> on primary (
3> name = 'SampleDB2',
4> filename = '/var/opt/mssql/data/SampleDB2.mdf',
5> size = 5GB,
6> maxsize = unlimited,
7> filegrowth = 10MB
8> )
9> log on (
10> name = 'SampleDB2_log',
11> filename = '/var/opt/mssql/data/SampleDB2_log.ldf',
12> size = 1GB,
13> maxsize = 2GB,
14> filegrowth = 5%
15> )
16> go

 在sqlserver 2008R2上。

create  database SampleDB2
on primary (
name = 'SampleDB2',
filename = 'c:\mssql\databases\SampleDB2.mdf',
size = 5GB,
maxsize = unlimited,
filegrowth = 10MB
)
log on (
name = 'SampleDB2_log',
filename = 'c:\mssql\databases\SampleDB2.ldf',
size = 1GB,
maxsize = 2GB,
filegrowth = 5%
 )
go
#显示数据库列表
1> select name,create_date from sys.databases;
2> go
name                                                                                                                             create_date            
-------------------------------------------------------------------------------------------------------------------------------- -----------------------
master                                                                                                                           2003-04-08 09:13:36.390
tempdb                                                                                                                           2018-07-30 13:41:12.817
model                                                                                                                            2003-04-08 09:13:36.390
msdb                                                                                                                             2018-06-30 00:03:38.280
SampleDB                                                                                                                         2018-07-30 15:04:06.577
SampleDB2                                                                                                                        2018-07-30 15:12:11.307

(6 rows affected)
删除数据库
1> drop database SampleDB2;
2> go

【2】创建/删除表

#连接并并指定数据库
[root@localhost ~]# sqlcmd -S localhost -U SA -d SampleDB
#创建"Sample_Table"表
create table dbo.Sample_Table (
 Number nvarchar(10) not null,
First_Name nvarchar(50) not null,
Last_Name nvarchar(50) null,
Last_Update date not null
)
go

#显示数据表
1> select name from sysobjects where xtype='u'
2> go
name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
Sample_Table                                                                                                                    

(1 rows affected)
#删除数据表
1> drop table dbo.Sample_Table;
2> go

【3】插入/更新/删除数据

#插入一条数据
insert into dbo.Sample_Table (
Number,First_Name,Last_Name,Last_Update
)
values (
'00001','CentOS','Linux','2018-10-05'
)
go
#插入多条数据
insert into dbo.Sample_Table (
Number,First_Name,Last_Name,Last_Update
)
values 
('00002','RedHat','Linux','2018-10-05'),
('00003','Ubuntu','Linux','2018-10-05'),
('00004','Debin','Linux','2018-10-05')
go

 

#显示所有条目
1> select * from dbo.Sample_Table;
2> go
Number     First_Name                                         Last_Name
                                 Last_Update
---------- -------------------------------------------------- -------------
-------------------------------- ----------------
00001      CentOS                                             Linux
                                       2017-10-05
00002      RedHat                                             Linux
                                       2018-07-30
00003      Fedora                                             Linux
                                       2018-07-30
00004      Ubuntu                                             Linux
                                       2018-07-30
00005      Debin                                              Linux
                                       2018-07-30

(5 行受影响)
#显示指定列的数据
1> select Number,First_Name from dbo.Sample_Table
2> go
Number     First_Name                                        
---------- --------------------------------------------------
00001      CentOS                                            
00002      RedHat                                            
00003      Fedora                                            
00004      Ubuntu                                            
00005      Debin                                             

(5 rows affected)
#显示前3行数据
1> select top 3 * from dbo.Sample_Table
2> go
Number     First_Name                                         Last_Name
                                 Last_Update
---------- -------------------------------------------------- -------------
-------------------------------- ----------------
00001      CentOS                                             Linux
                                       2017-10-05
00002      RedHat                                             Linux
                                       2018-07-30
00003      Fedora                                             Linux
                                       2018-07-30

(3 行受影响)
#更新数据
1> update dbo.Sample_Table
2> set Last_Update = '2018-07-30'
3> where First_Name = 'CentOS'
4> go

(1 行受影响)
1> select * from dbo.Sample_Table where First_Name = 'Debian'
2> go
Number     First_Name                                         Last_Name
                                 Last_Update
---------- -------------------------------------------------- --------------
-------------------------------- ----------------
00005      Debian                                             Linux
                                       2018-07-30

(1 行受影响)
#删除数据
delete dbo.Sample_Table where First_Name = 'Debian'
go

(1 rows affected)

【4】另一种执行SQL语句的方法

[root@localhost ~]# sqlcmd -S localhost -U SA -d SampleDB -Q 'select name,create_date from sys.databases'
Password: 
name                                                                                                                             create_date            
-------------------------------------------------------------------------------------------------------------------------------- -----------------------
master                                                                                                                           2003-04-08 09:13:36.390
tempdb                                                                                                                           2018-07-30 13:41:12.817
model                                                                                                                            2003-04-08 09:13:36.390
msdb                                                                                                                             2018-06-30 00:03:38.280
SampleDB                                                                                                                         2018-07-30 15:04:06.577

(5 rows affected)

计划任务

【作业常用的几个步骤】

EXEC msdb.dbo.sp_add_job
EXEC msdb.dbo.sp_delete_job
EXEC msdb.dbo.sp_add_jobstep
EXEC msdb.sp_add_jobschedule
EXEC msdb.dbo.sp_add_jobserver 
EXEC msdb.dbo.sp_start_job

1、新建作业“Daily SampleDB Backup"

USE msdb ;  
GO 
exec dbo.sp_add_job
@job_name = N'Daily SampleDB Backup'
go

2、删除作业“NightlyBackups”

USE msdb ;  
GO  

EXEC sp_delete_job  
    @job_name = N'NightlyBackups' ;  
GO  

3、在作业中添加步骤(操作)

USE msdb;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'Daily SampleDB Backup',  
    @step_name = N'Backup SampleDB',  
    @subsystem = N'TSQL',  
    @command = N'backup database SampleDB to disk =
    N''/var/opt/mssql/data/SampleDB.bak'' with noformat, noinit,
    name = ''SampleDB-full'', skip, norewind, nounload, stats = 10',    
    @retry_attempts = 5,  
    @retry_interval = 5 ;  
GO  

4、创建一个可由任意数量的作业使用的计划。

##日调度,每天0点执行一次
exec dbo.sp_add_schedule 
@schedule_name = N'Daily Backup for SAMPLE', 
@freq_type = 4,                 #每天
@freq_interval = 1,             #指定每多少天发生一次,这里是1天
@active_start_time = 000000;    #作业执行的开始时间,格式为HHMMSS
go

##日调度,每天0点开始,每隔2小时执行一次
exec dbo.sp_add_schedule 
@schedule_name = N'Daily Backup for SAMPLE', 
@freq_type = 4,                 #每天
@freq_interval = 2,             #指定每多少天发生一次,这里是1天
@active_start_time = 000000;    #作业执行的开始时间,格式为HHMMSS
go


##日调度,第小时执行一次
EXEC msdb..sp_add_jobschedule
        @job_id = @jobid,
        @name = N'每小时执行一次',
        @freq_type=4,                --每天
        @freq_interval=1,            --指定每多少天发生一次,这里是1天.
        @freq_subday_type=0x8,       --重复方式,(0x1=指定的时间;0x4=多少分钟;0x8=多少小时)执行一次
        @freq_subday_interval=1,     --重复周期数,这里每小时执行一次
        @active_start_date = NULL,   --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
        @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
        @active_start_time = 00000, --作业执行的开始时间,格式为HHMMSS
        @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS
go



--月调度(每X个月的每月几号)
EXEC msdb.dbo.sp_add_jobschedule
        @job_id = @jobid,
        @name = N'调度名称', 
        @freq_type = 16,             --每月
        @freq_recurrence_factor = 2, --每多少月执行一次,这里是每2个月
        @freq_interval = 2,          --在执行月的第几天执行,这里是第2天
        @freq_subday_type = 0x8,     --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
        @freq_subday_interval = 1,   --重复周期数,这里每小时执行一次
        @active_start_date = NULL,   --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
        @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
        @active_start_time = 00000, --作业执行的开始时间,格式为HHMMSS
        @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS
 
--月调度(每X个月的相对时间)
EXEC msdb.dbo.sp_add_jobschedule
        @job_id = @jobid,
        @name = N'调度名称', 
        @freq_type = 32,             --每月
        @freq_recurrence_factor = 2, --每多少月执行一次,这里是每2个月
        @freq_interval = 9,          --在当月的那个时间执行,1~7=星期日至星期六,8=日 ,9=工作日,10=周末
        @freq_relative_interval = 1, --在第几个相对时间执行,允许的值为1,2,4,8代表第1~4个相对时间,16表示最后一个相对时间
        @freq_subday_type = 0x8,     --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
        @freq_subday_interval = 1,   --重复周期数,这里每小时执行一次
        @active_start_date = NULL,   --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
        @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
        @active_start_time = 00000, --作业执行的开始时间,格式为HHMMSS
        @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS
 
--在特定时候执行的作业调度
EXEC msdb.dbo.sp_add_jobschedule
        @job_id = @jobid,
        @name = N'调度名称', 
        @freq_type = 64     --64=在SQLServerAgent 服务启动时运行,128=计算机空闲时运行



 设置一个作业计划。

exec sp_attach_schedule 
@job_name = N'Daily Backup SampleDB', 
@schedule_name = N'Daily Backup for SampleDB'; 
go 

5、在指定的服务器中,以指定的作业为目标。

EXEC dbo.sp_add_jobserver
@job_name = N'Daily SampleDB Backup'
GO

8、指示 SQL Server 代理立即执行作业。

USE msdb ;  
GO  

EXEC dbo.sp_start_job N'Daily SampleDB Backup' ;  
GO  

显示计划任务

SELECT * FROM sysjobschedules;
GO
schedule_id job_id                               next_run_date next_run_time
----------- ------------------------------------ ------------- -------------
         10 8F05391E-3FC0-435A-929B-B1580734DD99      20180731        120000

(1 rows affected)

显示任务列表

SELECT job_id,name from sysjobs;
GO
job_id                               name                                                                                                                            
------------------------------------ --------------------------------------------------------------------------------------------------------------------------------
8F05391E-3FC0-435A-929B-B1580734DD99 Daily SampleDB Backup                                                                                                           

(1 rows affected)

参考链接:

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sql-server-agent-stored-procedures-transact-sql?view=sql-server-2017

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值