AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-47836

David Thielen's questions

Martin Hope
David Thielen
Asked: 2024-12-07 12:38:24 +0800 CST

提供 SQL Server 中数据的有限视图

  • 5

我有一个多租户应用程序。因此,单个数据库包含所有使用该数据库的组织的数据。

有没有办法提供对数据库的访问权限,以便我的客户可以使用任何分析工具(例如 Power BI)连接到它。

有 Org 表 - 我可以在其中指定他们可以获取的该表的 PK。

然后是 Event 表,它有一个到 Org 表的 FK。

然后是注册(到事件)表,其中包含指向事件的 FK 和指向用户的 FK。

最困难的是用户表。如果用户注册了活动,那么该客户就可以获取该用户。这意味着多个客户可以看到该用户表行。

这是专门针对 SQL Server 的。因此,我需要制作一些视图来确定给定用户可以查看哪些用户记录。虽然我可以在 Event 表中复制 Ord PK,但用户记录(因为多个客户可以获得它)无法与添加的 FK 一起使用。

有办法吗?

sql-server
  • 1 个回答
  • 31 Views
Martin Hope
David Thielen
Asked: 2024-07-12 03:21:23 +0800 CST

简单查询耗时太长

  • 5

我有一个简单的查询,使用索引列,针对非常小的数据集,返回 1 行,访问 Azure SQL 数据库 - 耗时超过 1/2 秒。此查询的另一次早期执行耗时 38 毫秒。

执行计划(感谢JD)

查询:

SELECT [a].[Id], [a].[ClaimType], [a].[ClaimValue], [a].[UserId]
FROM [AspNetUserClaims] AS [a]
WHERE [a].[UserId] = @__id_0

数据库中有 36 行。UserId 是一个字符串,是 GUID。ClaimType 和 ClaimValue 是长度为 1 到 35 个字符的字符串。

UserId 已被索引。 在此处输入图片描述

2行数据:

Id  ClaimType   ClaimValue  UserId
5   SysAdmin    *   e69fac60-ea9b-4f73-8c7b-4cb75ec9721a
6   Admin   Arapahoe    e69fac60-ea9b-4f73-8c7b-4cb75ec9721a

我如何找出为什么读取速度有时很慢的原因?

sql-server
  • 1 个回答
  • 87 Views
Martin Hope
David Thielen
Asked: 2024-06-26 02:03:36 +0800 CST

如何衡量 SQL 数据库响应能力

  • 4

我正在对我的 Web 应用程序(即 Azure 应用服务器 + Azure SQL 数据库)进行负载测试。

在进行负载测试时,我正在查看 Azure 数据仪表板指标,大多数指标(DTU 百分比、CPU 百分比等)平均约为 0.2% 到 0.5%,有时会飙升至 2%。

在查询性能洞察中,最差的一个是 1.080 秒,一个是 0.860 秒,其余的都在 0.5 秒以下。我感兴趣的所有网页都有 1 或 2 个查询,尽管实体框架可以将 1 个查询拆分成多个。

性能建议和自动调整均未给出建议。我 99.9% 确信自己已索引了所有需要索引的内容。

我的问题是:

  1. 我还应该测量什么?我认为最重要的是查询要等待多长时间才能执行。如果查询运行时间为 0.0001 秒,但它是在 1 秒查询之后出现的,那么它返回之前需要 1.0001 秒。这值得一看吗?如果值得,我在哪里/如何找到它?
  2. 我认为我的查询已精简到我真正需要的程度。需要时间的查询是具有 4 个集合的模型,这些集合通过连接表填充。我需要这 4 个集合(我不会读取模型中我不需要的其他集合)。我能做些什么来加快这两个超过 0.5 秒的查询速度?当我过去查看它时,简单的读取查询在存储过程中并不更快(并且这样做会失去实体框架的优势)。
sql-server
  • 1 个回答
  • 65 Views
Martin Hope
David Thielen
Asked: 2023-11-16 09:13:00 +0800 CST

如何将数据库架构从本地 Sql Server 复制到 Azure SQL 数据库

  • 5

我认为执行此操作的方法是转到 SSMS 中的现有数据库(Sql Server 16.0.1105.1 开发人员版)并运行 Tasks | 生成脚本...

在此输入图像描述

这包括一个 FullTextTable。所以我得到了以下脚本(仅显示开始):

USE [master]
GO
/****** Object:  Database [LouisHowe]    Script Date: 11/15/2023 5:56:31 PM ******/
CREATE DATABASE [LouisHowe]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'LouisHowe', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\LouisHowe.mdf' , SIZE = 73728KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'LouisHowe_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\LouisHowe_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
 WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF
GO
ALTER DATABASE [LouisHowe] SET COMPATIBILITY_LEVEL = 160
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [LouisHowe].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [LouisHowe] SET ANSI_NULL_DEFAULT OFF 

看来数据库已经创建好了。但我收到了近 200 条错误消息(仅显示前几条):

Msg 40508, Level 16, State 1, Line 1
USE statement is not supported to switch between databases. Use a new connection to connect to a different database.
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near 'ON'.
Msg 319, Level 15, State 1, Line 10
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Msg 5011, Level 14, State 5, Line 12
User does not have permission to alter database 'LouisHowe', the database does not exist, or the database is not in a state that allows access checks.
Msg 5069, Level 16, State 1, Line 12
ALTER DATABASE statement failed.

我需要做什么来修复脚本?

sql-server
  • 1 个回答
  • 38 Views
Martin Hope
David Thielen
Asked: 2023-11-16 09:07:08 +0800 CST

如何通过 SSMS 更改 Azure SQL 数据库的登录密码

  • 5

我在 SSMS 中连接到 Azure 上的 SQL 数据库

我右键单击登录 - 菜单中没有属性选择

在此输入图像描述

如何更改登录密码?

ssms
  • 1 个回答
  • 9 Views
Martin Hope
David Thielen
Asked: 2014-10-08 11:50:24 +0800 CST

在选择中的计算中使用 count() 和 sum()

  • 0

我试图在一次选择中执行以下操作。我们有一个包含公司记录和用户记录的 SAAS。AUser是Company( Company.CompanyId = User.CompanyId) 的成员。在用户记录中,我们跟踪该用户(当月)的带宽使用情况。

我需要做一个选择,为我提供每个用户使用超过 1GB 带宽的所有公司。我可以通过公司使用以下方式获得这家公司:

select count(*) as numUsers, 
  sum(BandwidthThisMonth) as totalBandwidth 
from [User] 
where [User].CompanyId = @CompanyId

这种方法的问题是我必须首先获取每个公司的 CompanyId,然后一个一个地提取这些数据。而我只需要找到使用量超过 1GB/user 的情况,这种情况很少见。

有没有办法做这样的事情:

select 
  CompanyId, 
  count(*) as numUsers, 
  sum(BandwidthThisMonth) as totalBandwidth 
from Company, [User] 
where totalBandwidth - (numUsers*1000000000))/1000000000 > 0

count()&在哪里sum()仅针对用户记录在哪里User.CompanyId = Company.CompanyId?

select
  • 1 个回答
  • 113 Views
Martin Hope
David Thielen
Asked: 2014-10-07 15:46:15 +0800 CST

有没有办法复制/初始化集合中的值

  • 0

我想做的(我知道这行不通)是:

update stats
set BandwidthLastMonth = BandwidthThisMonth, 
    BandwidthThisMonth=0 
where myPk = 3

有没有办法在 select 语句中执行此操作?或者我是否需要编写一个存储过程并将每条记录命中两次(我当然希望不需要)。

我的解决方案需要适用于 Sql Azure 和 Sql Server 2008。

sql-server sql-server-2008
  • 1 个回答
  • 51 Views
Martin Hope
David Thielen
Asked: 2014-10-06 16:26:39 +0800 CST

如何获取 TVP 中未包含的所有数据行

  • 0

我正在尝试执行以下操作:

declare @domains DomainNames;
declare @CompanyId int
declare @CompanyName varchar(255);
declare @deletedList DomainNames;

set @CompanyId = 239;
set @CompanyName = 'dave';
insert into @domains (Domain) values ('ev2.com'), ('ev3.com');

select * from CompanyDomains where CompanyId = @CompanyId and EmailDomain != @domains

我在其中返回表中没有 EmailDomain 值与 @domains 中的任何值匹配的所有行(并且 CompanyId 具有设定值)。有没有办法做到这一点?

SQL Server 2008 和 SQL Azure。

谢谢 - 戴夫

sql-server-2008 stored-procedures
  • 1 个回答
  • 34 Views
Martin Hope
David Thielen
Asked: 2014-10-06 14:31:39 +0800 CST

如何获取作为存储过程中列表的局部变量?

  • 1

我在 C# 中有一些代码,我正在尝试移动到存储过程 - Sql Azure 不喜欢多次调用。所以一切都需要转移到过程中。

这是 C# 代码:

    List<string> addList = new List<string>(EmailDomains);
    List<string> deleteList = new List<string>();
    using (IDbCommand cmd = conn.CreateCommand())
    {
        cmd.Transaction = transaction;
        cmd.CommandText = "select * from CompanyDomains where CompanyDomains.CompanyId = @CompanyId";
        DbUtilities.AddParam(cmd, "@CompanyId", CompanyId);
        using (IDataReader reader = cmd.ExecuteReader())
        {
            int ordinal = reader.GetOrdinal("EmailDomain");
            while (reader.Read())
            {
                string domain = reader.GetString(ordinal).Trim();
                if (! addList.Remove(domain))
                {
                    deleteList.Add(domain);
                }
            }
        }
    }
    foreach (string domain in deleteList)
    {
        using (IDbCommand cmd = conn.CreateCommand())
        {
            cmd.Transaction = transaction;
            cmd.CommandText =
                "delete from CompanyDomains where CompanyDomains.CompanyId = @CompanyId and CompanyDomains.EmailDomain = @EmailDomain";
            DbUtilities.AddParam(cmd, "@CompanyId", CompanyId);
            DbUtilities.AddParam(cmd, "@EmailDomain", domain);
            cmd.ExecuteNonQuery();
        }
    }

    // deleted domains get added/updated to DeletedCompany
    foreach (string domain in deleteList)
    {
        DeletedCompany.InsertOrUpdate(conn, transaction, domain, CompanyName);
    }

    foreach (string domain in addList)
    {
        using (IDbCommand cmd = conn.CreateCommand())
        {
            cmd.Transaction = transaction;
            cmd.CommandText = "insert into CompanyDomains (CompanyId, EmailDomain) " +
                              "values (@CompanyId, @EmailDomain)";
            DbUtilities.AddParam(cmd, "@CompanyId", CompanyId);
            DbUtilities.AddParam(cmd, "@EmailDomain", domain.Trim());

            cmd.ExecuteNonQuery();
        }
    }

    // added domains get removed from DeletedCompany
    foreach (string domain in addList)
    {
                    using (IDbCommand cmd = conn.CreateCommand())
    {
        if (transaction != null)
            cmd.Transaction = transaction;
        cmd.CommandText = "delete from DeletedCompany where DeletedCompany.Domain = @Domain";
        DbUtilities.AddParam(cmd, "@Domain", domain);
        cmd.ExecuteNonQuery();
    }

    }

我完全停止的是我没有看到列表的任何等价物是 SQL。有没有办法在列表中建立所有这些?

或者我可以在选择使用我传入的列表的地方执行删除/插入/更新吗?我以定义的类型(表)的形式传递一个列表,它是新的域列表。从该列表中:

传入列表中不在 CompanyDomains 中的任何域都将添加到 CompanyDomains。

CompanyDomains 表中不在传入列表中的任何域 1) 从 CompanyDomains 中删除,以及 2) 添加/更新到 DeletedCompany 表。

liast 和 DeletedCompany 表中的任何域都将从 DeletedCompany 表中删除。

DeletedCompany.Domain 列在该表中是唯一的。所以添加到它必须是一个 upsert。

CompanyDomains 表也有一个 CompanyId 列,CompanyDomains.CompanyId = @CompanyId(将参数传递给 proc)。

这适用于 Sql Server 2008 和 Sql Azure。它不需要在其他任何东西上运行。

谢谢 - 戴夫

sql-server-2008 stored-procedures
  • 1 个回答
  • 221 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve