小编gbn*_*gbn的帖子

在向用户显式授予选择视图后,对(视图)对象的 SELECT 权限被拒绝

我有一个名为“1098Statement”的视图的数据库我们正在测试用户名为“appuser”的应用程序。

我尝试了以下解决方案来在视图上授予选择权并不断出错:

  1. 授予选择视图
  2. 将用户添加到 db_datareader
  3. 将用户添加到已在视图上授予选择权的数据库角色

    消息 229,级别 14,状态 5,第 2 行 对象“1098Statement”、数据库“mydb”、架构“dbo”的 SELECT 权限被拒绝。

他们都没有工作。

是否有任何人可以提供有关解决此问题的任何指示。

我唯一剩下的想法是检查

  1. 用户帐户,以查看对用户或帐户所属的任何角色是否有任何明确的“拒绝”限制。
  2. 检查视图以查看是否有任何明确的拒绝

sql-server-2005 security

7
推荐指数
1
解决办法
1万
查看次数

查询性能

为什么

SELECT Barraportfolioname
FROM   portfolio
WHERE  id IN (SELECT DISTINCT i1.portfolioid
              FROM   Import i1
                     LEFT OUTER JOIN Import i2
                       ON i1.PortfolioID = i2.PortfolioID
                          AND i2.ImportSetID = 82
              WHERE  i1.ImportSetID = 83
                     AND i2.ID IS NULL)  
Run Code Online (Sandbox Code Playgroud)

需要 0 秒,而以下查询需要 5 秒。

SELECT DISTINCT p.BarraPortfolioName AS name
FROM   Import i1
       INNER JOIN Portfolio p
         ON p.ID = i1.PortfolioID
       LEFT OUTER JOIN Import i2
         ON i1.PortfolioID = i2.PortfolioID
            AND i2.ImportSetID = 82
WHERE  i1.ImportSetID = 83
       AND i2.ID IS NULL;  
Run Code Online (Sandbox Code Playgroud)

我正在使用 SQL Server。这两个表在查询中使用的所有列上都有索引,即portfolioid、id、importsetid。 …

performance sql-server query

7
推荐指数
2
解决办法
330
查看次数

从 FILESTREAM 表中删除重复项|冗余唯一约束

我有一个带有 FILESTREAM 列的表,它有两个为同一个 FILESTREAM 列指定的唯一约束,即:

ALTER TABLE [dbo].[TableName] 
    ADD CONSTRAINT [UQ__TableName__33C4988760FC61CA] 
    UNIQUE NONCLUSTERED ([GUID_Column]);
GO

ALTER TABLE [dbo].[TableName] 
    ADD CONSTRAINT [UQ__TableName__33C49887145C0A3F] 
    UNIQUE NONCLUSTERED ([GUID_Column]);
GO
Run Code Online (Sandbox Code Playgroud)

我想删除一个独特的约束,因为它们是重复的。但是,当我尝试删除两个重复约束之一时,我收到以下错误。

具有 FILESTREAM 列的表必须具有非 NULL 唯一 ROWGUID 列。

任何人都知道如何删除两个约束之一?

sql-server constraint

6
推荐指数
1
解决办法
1546
查看次数

SQL Server 2008/2012 如何设置全文目录位置

我想将我的 SQL Server 2005 数据库升级到 SQL Server 2012。在 SQL Server 2005 中,您可以在创建全文目录时设置它的位置。但是在 SQL Server 2012(以及我从在线聊天中推断出的 SQL Server 2008)中,您无法指定位置。

在 SQL Server 2005 中,能够设置此位置很重要,因为出于性能原因,我们将目录放在单独的磁盘上。我知道全文引擎从 SQL Server 2008 开始发生了变化,但我找不到有关目录物理创建位置的信息,以及是否将它们放在单独的磁盘上仍然是最佳做法。

如何在 SQL Server 2008/2012 中设置目录位置?或者不再需要遵循将它们存储在单独磁盘上的最佳实践?

sql-server-2008 full-text-search sql-server-2012

5
推荐指数
2
解决办法
1万
查看次数

如何用 varchar2(4000) 列替换 CLOB 列?

下面的代码似乎可以完成这项工作,但我怀疑它是否足够健壮。

SET serveroutput on 

DECLARE
    v_isclob PLS_INTEGER;
    v_cmd    VARCHAR2(4000);
BEGIN
    SELECT CASE when exists (select * from USER_TAB_COLUMNS where COLUMN_NAME = 'Column_to_modify' AND TABLE_NAME = 'MyTable' AND DATA_TYPE = 'CLOB') then 1 else 0 end into v_isclob FROM DUAL;
    IF v_isclob > 0 THEN
        BEGIN
            EXECUTE IMMEDIATE 'ALTER TABLE MyTable RENAME COLUMN Column_to_modify  TO XXX';

            EXECUTE IMMEDIATE 'ALTER TABLE MyTable ADD Column_to_modify varchar2(4000)';

            EXECUTE IMMEDIATE 'UPDATE MyTable SET Column_to_modify = SUBSTR(XXX, 1, 4000)';

            EXECUTE IMMEDIATE 'ALTER TABLE MyTable DROP COLUMN …
Run Code Online (Sandbox Code Playgroud)

oracle

5
推荐指数
1
解决办法
3万
查看次数

MySQL聚合异常

我正在检查索引的某些列的选择性。
这种“忽略我给你的”行为记录在哪里?

这给出了 4,851,908、4,841,060 和 1,000,052

SELECT
     COUNT(*), 
     COUNT(DISTINCT Col1), COUNT(DISTINCT Col2)
FROM Sometable;
Run Code Online (Sandbox Code Playgroud)

根据 MySQL 扩展,这提供了 4,843,634 个唯一对

SELECT COUNT(DISTINCT Col1, Col2) FROM Sometable
Run Code Online (Sandbox Code Playgroud)

以下是错误的:无论任何填充列或表达式顺序如何,单个 COUNT(DISTINCT colx) 都给出 4,843,634 唯一对计数。

我预期COUNT(DISTINCT Col1) = 4,841,060,和COUNT(DISTINCT Col1) = 1,000,052

SELECT COUNT(DISTINCT Col1), COUNT(DISTINCT Col2) FROM Sometable

SELECT COUNT(DISTINCT Col2), COUNT(DISTINCT Col1) FROM Sometable

SELECT COUNT(DISTINCT Col1), 1 AS Filler, COUNT(DISTINCT Col2) FROM Sometable
Run Code Online (Sandbox Code Playgroud)

但这再次给出了另一个聚合的正确值(COUNT(*)如上)

SELECT COUNT(DISTINCT Col1), MAX(col1) AS Filler, COUNT(DISTINCT Col2) FROM Sometable
Run Code Online (Sandbox Code Playgroud)

问题,如果不清楚: …

mysql aggregate

5
推荐指数
1
解决办法
292
查看次数

复制两个程序使用的数据库

我在两个相同的数据库之间设置了一个对等事务复制集,每个数据库都被两个不同服务器上的不同程序使用。由于我们实现了复制,我一直在表上遇到 PK 冲突,尽管插入语句没有输入主键并让 SQL Server 处理它,但两个程序都会更新。在这种情况下,表名是 Statistics: Violation of PRIMARY KEY 约束 'PK_Statistics'。无法在对象“dbo.Statistic”中插入重复键。

我的插入语句:

INSERT INTO [StackExchange].[dbo].[Statistic]
       ([UserId]
       ,[CreateDate]
       ,[IsError]
       ,[CustomData]
       ,[ModuleId]
       ,[StatisticTypeId])
 VALUES
       (19,GETDATE(),'true','test replication',1,1)
Run Code Online (Sandbox Code Playgroud)

此外,服务器中的事件查看器充满了冲突数据:

这是我在服务器 2 上经常遇到的错误:

在对等 1(传入)、事务 id 0x000000000031dea3 和对等(空)(在磁盘上)、事务 id(空)之间的对等 2 上检测到“更新-删除”类型的冲突

这是我在服务器 1 上遇到的相同事务错误:

在对等 2(传入)、事务 ID 0x0000000000245950 和对等 1(在磁盘上)、事务 ID 0x000000000031dea3 之间的对等 1 上检测到“删除更新”类型的冲突

在这种情况下,你会建议我做什么?

谢谢!

replication sql-server

5
推荐指数
1
解决办法
713
查看次数

SQL Server 登录问题

我尝试连接到 SQL Server 2008,我收到以下错误。

用户 <> 登录失败。原因:无法打开明确指定的数据库。

顺便说一下,我在 Windows Server 2008 64 位企业版上有一个 SQL Server 2008 R2。

谢谢,

sql-server-2008 windows

4
推荐指数
1
解决办法
732
查看次数

DBA 和 DA 有什么区别?

在用户分类中,我看到了两种不同的分类:

第一:

  • 最终用户
  • 数据库管理员
  • 血压计

和第二个:

  • 最终用户
  • 数据库管理员
  • DA

DADBA 有什么区别?

user-defined-type

4
推荐指数
1
解决办法
3万
查看次数

使用tsql函数的存储过程参数?

环境sql server 2005 sp3

我有一个以 INT 作为输入的存储过程。我想在调用存储过程期间将 CHAR 转换为 INT。看来我不能那样做。我在@foo 之前收到语法错误。我没有看到它请有人帮我找到它。非常感谢。

CREATE PROCEDURE testme
@test AS INT
AS
BEGIN
SELECT @TEST
END

    DECLARE @foo AS CHAR(6)
set @foo = '11test'
EXEC testMe @test = CAST(Substring(@foo,1,2) as int)
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

3
推荐指数
2
解决办法
5941
查看次数