• [问题求助] SQL server迁移gaussDB
    请问SQL server迁移GaussDB有什么工具可以实现对象的迁移?
  • [常见问题汇总帖] RPA问题
    RPA访问连接数据库获取数据除了通过连接数据库控件还有其他方法吗
  • [技术干货] arm架构服务器安装SQL SERVER
    实际上arm架构服务器是不可以安装SQL SERVER的,SQL SERVER 2022 preview 版本说明也没有提及兼容arm架构。目前唯一的做法是安装 Azure SQL Edgesudo docker pull mcr.microsoft.com/azure-sql-edgesudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=Your@Strong!Password' -e 'MSSQL_PID=Developer' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
  • [交流吐槽] SQL Server 查询存储,做查询优化的利器
    介绍一个SQL Server 2016后新增的功能:查询存储。查询存储的工作原理类似于飞行数据记录器或者黑匣子,不断地收集与查询和计划相关的编译和运行时信息,包括已执行查询的历史记录,查询运行时执行统计信息,针对执行计划的执行计划等。与查询相关的数据将永久保存在内部表中,并通过一组视图向用户显示。通过这些信息,可以快速查找性能差异,识别由查询计划更改和故障排除引起的性能等等问题。通过以下命令或者SSMS界面进行开启ALTER DATABASE [DatabaseOne] SET QUERY_STORE = ON; 查询存储开启后官方对内部对应的一些表,详细描述如下查看说明当然,这种类似的节点信息收集的东西,其实并不适合查询频率过大的查询,经过非严谨测试,性能损耗大概在5%左右。做过DB性能优化的人应该都知道,以前我们要么通过持续性的日志记录分析,要么通过实时的监控去找到对应的性能瓶颈,包括CPU、内存、IO等,查询存储其实就是在此基础上更进一步,把我们关心的点都存储起来,并且有更详尽信息和标准分析报告,相当省事。具体可以查看官方文档学习学习。
  • [行业资讯] 微软改进Cosmos DB并发布SQL Server 2022预览版
    SQL Server在两年前进行了最后一次重大里程碑更新,即SQL Server 2019更新。SQL Server 2022更新的一大重点是与Microsoft Azure云的更紧密集成。同时,微软正在为Cosmos DB数据库提供一系列增量更新,包括索引指标-帮助优化查询性能,以及新Patch API-支持数据库中优化部分文档更新。Gartner公司分析师Adam Ronthal称:“Cosmos DB仍然是强大的多模型非关系DBMS(数据库管理系统)产品。在提供具有多个非关系API的平台时,微软将Cosmos DB定位为适用于云原生应用程序的灵活、现代的DBMS。”在Ronthal看来,微软对Cosmos DB采取了不同于其一些核心竞争对手的方法,主要体现在他们提供多模型非关系平台,而非多个最适合的工程系统。Ronthal称:“这提供了一种统一的方法,对希望整合其数据管理领域的企业很有吸引力。”SQL Server 2022将推动微软云数据服务Cosmos DB是一种较新的多模型云原生数据库,微软仍致力于推进其更成熟的SQL Server 数据库。Cosmos DB于2017年首次发布,而SQL Server的历史可以追溯到1989年,早于现代云时代。通过SQL Server 2022,微软的目标是将关系数据库平台引入其Azure云生态系统。微软执行副总裁Scott Guthrie在Ignite技术会议上说:“SQL Server 2022是迄今为止支持云功能最多的SQL Server版本。”Guthrie指出,SQL Server 2022增加了新的业务连续性功能,在Azure中具有内置灾难恢复集成。该更新还添加了与数据治理平台Azure Purview的集成。Guthrie补充说,它还包括本地操作SQL Server数据的分析,其中Azure Synapse分析运行在云端。总的来说,Guthrie表示微软正在寻求在其内部部署和云数据服务之间提供双向灵活性。根据微软在SQL Server 2022中所采取的方向,Ronthal表示这有助于将Azure定位为分析和业务连续性的重心,同时为本地和云组件提供整体方法。 Ronthal 称:“微软继续投资于本地组件和云组件之间的更深层次集成,利用它们在两个领域的优势。”
  • [技术讨论] 有没有可能在鲲鹏服务器上安装SQL SERVER 2019?
    安装了 ExaGear,也不知道成功没有,但是SQL SERVER是没跑起来
  • [交流吐槽] 特定于 Entity Framework Core SQL Server 提供程序的索引功能
    此页详细介绍了特定于 SQL Server 提供程序的索引配置选项。群集聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。 为表创建适当的聚集索引可以显著提高查询的速度,因为数据已经按最佳顺序进行布局。 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 有关详细信息,请参阅有关聚集索引和非聚集索引的 SQL Server 文档。默认情况下,表的主键列由聚集索引隐式支持,所有其他索引为非聚集索引。可以按如下所示配置要聚集的索引或键:protected override void OnModelCreating(ModelBuilder modelBuilder){    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsClustered();}填充因子提供索引填充因子选项是为了优化索引数据存储和性能。 有关详细信息,请参阅有关填充因子的 SQL Server 文档。可按如下所示配置索引的填充因子:protected override void OnModelCreating(ModelBuilder modelBuilder){    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).HasFillFactor(10);}联机创建ONLINE 选项允许在创建索引期间并发用户访问基础表或聚集索引数据以及任何关联的非聚集索引,以便用户可以继续更新和查询基础数据。 当脱机执行数据定义语言 (DDL) 操作(例如,生成或重新生成聚集索引)时,这些操作对基础数据和关联索引持有排他锁。 有关详细信息,请参阅有关 ONLINE 索引选项的 SQL Server 文档。可以使用 ONLINE 选项配置索引,如下所示:protected override void OnModelCreating(ModelBuilder modelBuilder){    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsCreatedOnline();}
  • [整体安全] 【漏洞预警】Oracle MySQL Server输入验证错误漏洞(CVE-2022-21367)
    漏洞描述:甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。Oracle MySQL Server是美国甲骨文(Oracle)公司的一款关系型数据库。Oracle MySQL Server存在输入验证错误漏洞,攻击者可利用该漏洞未经授权更新、插入或删除对MySQL Server可访问数据的访问。漏洞危害:Oracle MySQL 的MySQL Server 产品中的漏洞。受影响的版本包括 5.7.36 及更早版本和 8.0.27 及更早版本。易于利用的漏洞允许高特权攻击者通过多种协议进行网络访问,从而破坏MySQL服务器。成功攻击此漏洞可导致未经授权的能力,导致MySQL服务器挂起或频繁可重复的崩溃,以及未经授权的更新,插入或删除对某些MySQL服务器可访问数据的访问。影响范围:Oracle MySQL Server <=5.7.36Oracle MySQL Server <=8.0.27漏洞等级:  中危修复方案:厂商已发布了漏洞修复程序,请及时关注更新:https://www.oracle.com/security-alerts/cpujan2022.html
  • [技术干货] openGauss数据库开发指导手册(上)
    简介本实验指导书主要目的是为了让读者熟悉并掌握openGauss数据库的基本操作,并通过案例强化学习。内容描述本实验指导书先介绍创建管理用户、表及其它数据库对象等openGauss数据库的基本操作,再从学校数据模型的案例入手,进行模拟演练。前置条件openGauss数据库开发需要掌握openGauss数据库的基本操作和SQL语法,openGauss数据库支持SQL2003标准语法,数据库基本操作参见附录一。实验环境说明组网说明本实验环境为华为云ECS服务器和openGauss数据库。设备介绍为了满足本实验需要,建议实验环境采用以下配置:设备名称、型号与版本的对应关系如下:设备明细表设备名称设备型号软件版本数据库openGaussopenGauss 1.1.0操作系统openEuleropenEuler 20.3LTS实验概览1 数据库开发实验1.1 创建和管理用户、表空间和数据库1.1.1 创建和管理用户1.1.1.1 创建用户通过CREATE USER创建的用户,默认具有LOGIN权限;通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。创建用户jim,登录密码为Bigdata@123。postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; CREATE ROLE同样的下面语句也可以创建用户。postgres=# CREATE USER kim IDENTIFIED BY 'Bigdata@123'; CREATE ROLE如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。postgres=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123'; CREATE ROLE1.1.1.2 管理用户将用户jim的登录密码由Bigdata@123修改为Abcd@123。postgres=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123'; ALTER ROLE为用户jim追加CREATEROLE权限。postgres=# ALTER USER jim CREATEROLE; ALTER ROLE将enable_seqscan的值设置为on,设置成功后,在下一会话中生效。postgres=# ALTER USER jim SET enable_seqscan TO on; ALTER ROLE锁定jim帐户。postgres=# ALTER USER jim ACCOUNT LOCK; ALTER ROLE删除用户。postgres=# DROP USER kim CASCADE; DROP ROLE postgres=# DROP USER jim CASCADE; DROP ROLE postgres=# DROP USER dim CASCADE; DROP ROLE1.1.2 创建和管理表空间1.1.2.1 创建表空间步骤 1 执行如下命令创建用户jack。postgres=# CREATE USER jack IDENTIFIED BY 'Bigdata@123';当结果显示为如下信息,则表示创建成功。CREATE ROLE步骤 2 执行如下命令创建表空间。postgres=# CREATE TABLESPACE fastspace RELATIVE LOCATION 'tablespace/tablespace_1';当结果显示为如下信息,则表示创建成功。CREATE TABLESPACE其中“fastspace”为新创建的表空间,“数据库节点数据目录/pg_location/tablespace/tablespace_1”是用户拥有读写权限的空目录,如 /gaussdb/data/db1/pg_location/tablespace/tablespace_1 。步骤 3 数据库系统管理员执行如下命令将“fastspace”表空间的访问权限赋予数据用户jack。postgres=# GRANT CREATE ON TABLESPACE fastspace TO jack;当结果显示为如下信息,则表示赋予成功。GRANT1.1.2.2 管理表空间1.1.2.2.1 查询表空间方式1:检查pg_tablespace系统表。如下命令可查到系统和用户定义的全部表空间。postgres=# SELECT spcname FROM pg_tablespace; spcname ------------ pg_default pg_global fastspace (3 rows)方式2:使用gsql程序的元命令查询表空间。postgres=# \db List of tablespaces Name | Owner | Location ------------+-------+------------------------- fastspace | omm | tablespace/tablespace_1 pg_default | omm | pg_global | omm | (3 rows)1.1.2.2.2 查询表空间使用率步骤 1 查询表空间的当前使用情况。postgres=# SELECT PG_TABLESPACE_SIZE('fastspace');返回如下信息:pg_tablespace_size -------------------- 4096 (1 row)其中4096表示表空间的大小,单位为字节。步骤 2 计算表空间使用率。表空间使用率=PG_TABLESPACE_SIZE/表空间所在目录的磁盘大小。1.1.2.2.3 修改表空间执行如下命令对表空间fastspace重命名为fspace。postgres=# ALTER TABLESPACE fastspace RENAME TO fspace; ALTER TABLESPACE1.1.2.2.4 删除表空间执行如下命令删除用户jack。postgres=# DROP USER jack CASCADE; DROP ROLE执行如下命令删除表空间fspace。postgres=# DROP TABLESPACE fspace; DROP TABLESPACE说明:用户必须是表空间的owner或者系统管理员才能删除表空间。1.1.3 创建和管理数据库1.1.3.1 创建数据库步骤 1 使用如下命令创建一个新的表空间tpcds_local。postgres=# CREATE TABLESPACE tpcds_local RELATIVE LOCATION 'tablespace/tablespace_2'; CREATE TABLESPACE步骤 2 使用如下命令创建一个新的数据库db_tpcc。postgres=# CREATE DATABASE db_tpcc WITH TABLESPACE = tpcds_local; CREATE DATABASE1.1.3.2 管理数据库1.1.3.2.1 查看数据库使用\l元命令查看数据库系统的数据库列表(l表示list)。postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+-----------+---------+-------+------------------- db_tpcc | omm | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm (4 rows)使用如下命令通过系统表pg_database查询数据库列表。postgres=# SELECT datname FROM pg_database; datname ----------- template1 db_tpcc template0 postgres (4 rows)1.1.3.2.2 修改数据库用户可以使用如下命令修改数据库属性(比如:owner、名称和默认的配置属性)。使用以下命令为数据库设置默认的模式搜索路径。postgres=# ALTER DATABASE db_tpcc SET search_path TO pa_catalog,public; ALTER DATABASE使用如下命令为数据库重新命名。postgres=# ALTER DATABASE db_tpcc RENAME TO human_tpcds; ALTER DATABASE1.1.3.2.3 删除数据库用户可以使用DROP DATABASE命令删除数据库。此命令删除了数据库中的系统目录,并且删除了带有数据的磁盘上的数据库目录。用户必须是数据库的owner或者系统管理员才能删除数据库。当有人连接数据库时,删除操作会失败。删除数据库时请先连接到其他的数据库。使用如下命令删除数据库:postgres=# DROP DATABASE human_tpcds; DROP DATABASE1.2 创建和管理表1.2.1 创建表表是建立在数据库中的,在不同的数据库中可以存放相同的表。甚至可以通过使用模式在同一个数据库中创建相同名称的表。执行如下命令创建表。 postgres=# CREATE TABLE customer_t1 ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) );当结果显示为如下信息,则表示创建成功。CREATE TABLE其中c_customer_sk 、c_customer_id、c_first_name和c_last_name是表的字段名,integer、char(5)、char(6)和char(8)分别是这四字段名称的类型。1.2.2 向表中插入数据1.2.2.1 向表customer_t1中插入一行数据数据值是按照这些字段在表中出现的顺序列出的,并且用逗号分隔。通常数据值是文本(常量),但也允许使用标量表达式。postgres=# INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', 'Grace');如果用户已经知道表中字段的顺序,也可无需列出表中的字段。例如以下命令与上面的命令效果相同。postgres=# INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');如果用户不知道所有字段的数值,可以忽略其中的一些。没有数值的字段将被填充为字段的缺省值。例如:postgres=# INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace'); 或postgres=# INSERT INTO customer_t1 VALUES (3769, 'hello');1.2.2.2 向表中插入多行数据命令如下:postgres=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES (6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James');如果需要向表中插入多条数据,除此命令外,也可以多次执行插入一行数据命令实现。但是建议使用此命令可以提升效率。1.2.2.3 从指定表插入数据到当前表如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1的备份表customer_t2,现在需要将表customer_t1中的数据插入到表customer_t2中,则可以执行如下命令。postgres=# CREATE TABLE customer_t2 ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) ); 插入数据:INSERT INTO customer_t2 SELECT * FROM customer_t1;删除备份表:postgres=# DROP TABLE customer_t2 CASCADE; DROP TABLE1.2.3 更新表中数据修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。需要将表customer_t1中c_customer_sk为9527的字段重新定义为9876:postgres=# UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527; UPDATE 1这里的表名称也可以使用模式名修饰,否则会从默认的模式路径找到这个表。SET后面紧跟字段和新的字段值。新的字段值不仅可以是常量,也可以是变量表达式。比如,把所有c_customer_sk的值增加100:postgres=# UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;用户可以在一个UPDATE命令中更新更多的字段,方法是在SET子句中列出更多赋值,比如:postgres=# UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;1.2.4 查看数据使用系统表pg_tables查询数据库所有表的信息。postgres=# SELECT * FROM pg_tables;使用gsql的\d+命令查询表的结构。postgres=# \d+ customer_t1;执行如下命令查询表customer_t1的数据量。postgres=# SELECT count(*) FROM customer_t1;执行如下命令只查询字段c_customer_sk的数据。postgres=# SELECT c_customer_sk FROM customer_t1;执行如下命令过滤字段c_customer_sk的重复数据。postgres=# SELECT DISTINCT( c_customer_sk ) FROM customer_t1;执行如下命令查询字段c_customer_sk为3869的所有数据。postgres=# SELECT * FROM customer_t1 WHERE c_customer_sk = 3869;执行如下命令按照字段c_customer_sk进行排序。postgres=# SELECT * FROM customer_t1 ORDER BY c_customer_sk;执行如下命令查询ROWNUM伪列。postgres=# SELECT rownum,c_customer_sk,c_customer_id FROM customer_t1;执行如下命令使用别名进行查询(CNB、CSK、CID为列别名,T 为表别名)。postgres=# SELECT rownum CNB,T.c_customer_sk CSK,T.c_customer_id CID FROM customer_t1 T;1.2.5 删除表中数据在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。使用DELETE命令删除行,如果删除表customer_t1中所有c_customer_sk为3869的记录:postgres=# DELETE FROM customer_t1 WHERE c_customer_sk = 3869;如果执行如下命令之一,会删除表中所有的行。postgres=# DELETE FROM customer_t1;或:postgres=# TRUNCATE TABLE customer_t1;全表删除的场景下,建议使用truncate,不建议使用delete。删除创建的表:postgres=# DROP TABLE customer_t1;
  • [技术干货] SQL Server Msdb
    Msdb数据库用来保存数据库备份、SQL Agent信息、DTS程序包和SQL Server任务等信息,以及诸如日志转移这样的复制信息
  • [技术干货] SQL Server Tempdb
    Tempdb数据库存有临时对象,例如全局和本地临时表和存储过程。这个数据库在SQL Server每次重启的时候都会被重新创建,而其中包含的对象是依据模型数据库里定义的对象被创建的。除了这些对象,Tempdb还存有其它对象,例如表变量、来自表值函数的结果集,以及临时表变量。由于Tempdb会保留SQL Server实体上所有数据库的对象类型,所以,对数据库进行优化配置是非常重要的。
  • [技术干货] SQL Server Model
    Model数据库(模型数据库)是一个用来在实体上创建新用户数据库的模版数据库,可以把任何存储过程、视图、用户等放在模型数据库里,这样在创建新数据库的时候,新数据库就会包含存放在模型数据库里的所有对象了。
  • [技术干货] SQL Server Master
    Master数据库(主数据库)保存有放在SQL Server实体上的所有数据库元数据的详细信息,它还是将引擎固定起来的粘合剂。由于如果不使用Master数据库,那么SQL Server就不能启动,所以,必须要小心地管理好这个数据库。因此,对这个数据库进行常规备份是十分必要的。这个数据库包括了诸如系统登录、配置设置、已连接的Server等信息。主数据库还存有扩展存储过程,它能够访问外部进程,从而允许与磁盘子系统和系统API调用等特性交互。
  • [技术干货] Oracle跟SQL Server 2005的区别
    宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 
  • [技术干货] SQL Server 2012 多表连接查询功能实例代码
    直接给大家贴代码了,具体代码如下所示:-- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ClassInfo -- 内连接 (Inner 可以省略) SELECT * FROM Student JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Inner Join SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- on 条件,通常是 主外键,但是不限于主外键 -- on 条件,允许有多个,而且可能是针对某个表的 SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID AND dbo.Student.Class IN (1,2) -- 针对Student表增加查询条件 -- 不等于 (笛卡尔值减去 相等的值) SELECT * FROM Student INNER JOIN dbo.ClassInfo ON dbo.Student.Class <> dbo.ClassInfo.ID; --自连接 从Class表中查询到Class所在的系 SELECT T1.* ,T2.ClassName FROM dbo.ClassInfo AS T1 INNER JOIN dbo.ClassInfo AS T2 ON T1.PID=T2.ID -- Left Join SELECT * FROM Student Left JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Right Join SELECT * FROM Student RIGHT JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- 全外连接 SELECT * FROM Student FULL OUTER JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- 外连接和内连接的区别是: -- 内连接,on条件不符合的话,会过滤掉数据 -- 外连接,以保留表为主,on条件成立显示数据,否则显示NULL --Union 纵向连接 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student WHERE StuID<=2 UNION SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID>2 --Union 去重复 SELECT StuSex FROM Student WHERE StuID<=2 UNION SELECT StuSex FROM dbo.Student WHERE StuID>2 --Union 显示全部 SELECT StuSex FROM Student WHERE StuID<=2 UNION ALL SELECT StuSex FROM dbo.Student WHERE StuID>2 --Except 差集,排除 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student Except SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID<=2 --Intersect 交集 SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM Student WHERE StuID>=2 Except SELECT StuID,StuName,StuEnName,StuAge,StuBirthday FROM dbo.Student WHERE StuID<=3
总条数:108 到第
上滑加载中