分类 数据库 下的文章

在使用正则前,需要启用系统高级选项的OLE自动化功能,启用过程如下:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ole Automation Procedures',1
reconfigure

安全起见,使用完后记得关闭该高级功能:

exec sp_configure 'Ole Automation Procedures',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

搜索 Function:

ALTER FUNCTION [dbo].[RegexMatch]
(
    @matchstring VARCHAR(4000),
    @pattern VARCHAR(200)
)
RETURNS BIT
AS BEGIN
    DECLARE @handle int, @result bit
    exec sp_oacreate 'vbscript.regexp', @handle output
    exec sp_oasetproperty @handle, 'pattern',@pattern
    exec sp_oasetproperty @handle, 'global', 'true'
    exec sp_oasetproperty @handle, 'ignorecase', 0
    exec sp_oamethod @handle, 'test', @result output,@matchstring
    exec sp_oadestroy @handle
    return @result
END

使用:

select dbo.RegexMatch(N'abc12345',N'\d{5}')

替换Function

CREATE FUNCTION [dbo].[RegReplace]
(
    @matchstring VARCHAR(4000),
    @pattern VARCHAR(200),
    @replace VARCHAR(200)
)
RETURNS VARCHAR(4000)
AS BEGIN
    DECLARE @handle int, @result VARCHAR(4000)
    exec sp_oacreate 'vbscript.regexp', @handle output
    exec sp_oasetproperty @handle, 'pattern',@pattern
    exec sp_oasetproperty @handle, 'global', 1 --全局替换
    exec sp_oasetproperty @handle, 'ignorecase', 1 --忽略大小写
    exec sp_oamethod @handle, 'Replace', @result output,@matchstring,@replace
    exec sp_oadestroy @handle
    return @result
END

使用:

select dbo.RegReplace('hello 123','\d{2}','world')

一、要求

1.centos或redhat7.0以上系统
2.内存2G以上

二、安装步骤

1.设置sqlserver安装镜像

curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo

2.执行安装

yum install -y mssql-server

完毕之后运行 sudo /opt/mssql/bin/mssql-conf setup 做相关配置
输入2使用Developer(免费,无生产许可)版本,再输入 Yes 接受许可,选择语言,设置系统管理员密码

完毕之后即可启动完成,如果内存不够安装失败则重新命令

sudo /opt/mssql/bin/mssql-conf setup

3.下面查看我们安装的sql server版本

rpm -qa | grep mssql

4.查看安装的路径

find / -name mssql

5.设置开机启动

systemctl enable mssql-server

6.打开1433端口

firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --reload

7.几个命令

systemctl start mssql-server
systemctl restart mssql-server
systemctl stop mssql-server
systemctl status mssql-server

具体配置路劲为/opt/mssql/bin/mssql-conf

CentOS 8上安装MS SQL server

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
#SQL Server 2017使用python2和OpenSSL 1.0,你需要在不解析依赖关系的情况下安装软件包:
sudo yum -y install python2 compat-openssl10
sudo alternatives --set python /usr/bin/python2
sudo yum download mssql-server
sudo rpm -Uvh --nodeps mssql-server*rpm

再运行 sudo /opt/mssql/bin/mssql-conf setup 跟上面一样

安装SQL Server命令行工具
使用unixODBC开发包安装mssql-tools:

curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
yum -y install mssql-tools unixODBC-devel
vim /etc/profile.d/mssqltools.sh

输入内容:

export PATH=$PATH:/opt/mssql-tools/bin/

然后 source一下

source /etc/profile.d/mssqltools.sh

---------------- 自动备份 -----------------

2、添加crontab定时任务

crontab -e

添加定时任务,每天6点0分执行

0 6 * * * /home/backup/backup_mssql.sh

3、查看crontab定时任务

crontab -l

完整脚本代码:

#!/bin/bash
#sql备份目录
folder=/home/backup/db
cd $folder
day=`date +%Y%m%d`
#rm -rf $day
#mkdir $day
#cd $day
#数据库服务器,一般为localhost
host=localhost
#用户名
user=sa
#密码
password='mypassword'
#要备份的数据库
db=ASPState

#数据要保留的天数
days=5

#由于crontab命令是没环境变量,所以sqlcmd命令,要用全路径,否则定时执行会执行失败
/opt/mssql-tools/bin/sqlcmd -H$host -U$user -P$password -Q "
BACKUP DATABASE "$db"
TO DISK = '/home/backup/db/"$db$day".bak'
WITH FORMAT;
GO"

#删除之前的备份
#cd ..
day=`date -d "$days days ago" +%Y%m%d`
rm -rf "/home/backup/db/"$db$day".bak"
echo "remove "$db$day".bak"

---------------------- 相关操作 ----------------------

less /var/log/messages    系统日志
cat /dev/null>/var/log/messages    清除日志

下载mysql源安装包

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

检查是否安装成功

yum repolist enabled | grep "mysql.*-community.*"

安装

yum install mysql-community-server

启动

systemctl start mysqld
systemctl restart mysqld

查看启动状态

systemctl status mysqld

设置开机启动

systemctl enable mysqld
systemctl daemon-reload

修改登录密码
mysql安装完并启动后,在/var/log/mysqld.log文件中给root生成了一个默认密码。

本地MySQL客户端登录

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypassword';

use mysql;
select host, user from user;

允许远程连接

update user set host='%' where user ='root';
flush privileges;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mypassword';

修改侦听:

vi /etc/my.cnf

后面加上:

bind-address=0.0.0.0
port=8020
max_connections=200

修改后如果不能启动:
1.  防火墙问题

firewall-cmd --zone=public --add-port=8020/tcp --permanent
systemctl restart firewalld
  1. SELinux问题
    方法一: 不需要重启Linux:

 [root@dytl05 ~]# setenforce 0

 方法二:需要重启Linux:

vi /etc/selinux/config
SELINUX=disabled

默认编码方式

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

部分参数配置查询命令

#查询mysql最大连接数设置
show global variables like 'max_conn%';
SELECT @@MAX_CONNECTIONS AS 'Max Connections';

# 查看最大链接数
show global status like 'Max_used_connections'; 

# 查看慢查询日志是否开启以及日志位置
show variables like 'slow_query%';

# 查看慢查询日志超时记录时间
show variables like 'long_query_time'; 

# 查看链接创建以及现在正在链接数
show status like 'Threads%';

# 查看数据库当前链接
show processlist;

# 查看数据库配置
show variables like '%quer%';


dbbackup.bat

@echo off
set bak_file=D:\data\backup\mydb_%date:~2,2%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%

mysqldump -h127.0.0.1 -P8010 -uroot -pPassword mydb > %bak_file%_db.sql
mysqldump -h127.0.0.1 -P8010 -uroot -pPassword -n -t -d -R allchat > %bak_file%_sp.sql

::zip
makecab /d compressiontype=mszip %bak_file%_db.sql %bak_file%_db.zip
makecab /d compressiontype=mszip %bak_file%_sp.sql %bak_file%_sp.zip

del /f /s /q %bak_file%_db.sql
del /f /s /q %bak_file%_sp.sql

deloldbak

deloldbak.bat

@echo off
title 清理IIS日志文件

:: 日志文件目录
set log_dir="D:\data\backup"

:: 保留日志天数
set bak_dat=15

:: 删除日志文件
forfiles /p %log_dir% /S /M *.zip /D -%bak_dat% /C "cmd /c echo 正在删除@relpath 文件… & echo. & del @file"

:: pause