小编DBA*_*rew的帖子

为什么SQL Server标量值函数会变慢?

为什么标量值函数似乎会导致查询在连续使用它们的次数越多,累积运行速度越慢?

我有这个表是用从第三方购买的数据构建的.

我已经删除了一些东西,以使这篇文章缩短...但只是让你了解事情是如何设置的.

CREATE TABLE [dbo].[GIS_Location](
        [ID] [int] IDENTITY(1,1) NOT NULL, --PK
        [Lat] [int] NOT NULL,
        [Lon] [int] NOT NULL,
        [Postal_Code] [varchar](7) NOT NULL,
        [State] [char](2) NOT NULL,
        [City] [varchar](30) NOT NULL,
        [Country] [char](3) NOT NULL,

CREATE TABLE [dbo].[Address_Location](
    [ID] [int] IDENTITY(1,1) NOT NULL, --PK
    [Address_Type_ID] [int] NULL,
    [Location] [varchar](100) NOT NULL,
    [State] [char](2) NOT NULL,
    [City] [varchar](30) NOT NULL,
    [Postal_Code] [varchar](10) NOT NULL,
    [Postal_Extension] [varchar](10) NULL,
    [Country_Code] [varchar](10) NULL,
Run Code Online (Sandbox Code Playgroud)

然后我有两个查找LAT和LON的函数.

CREATE FUNCTION [dbo].[usf_GIS_GET_LAT]
(
    @City VARCHAR(30),
    @State CHAR(2)
) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 sql-function

16
推荐指数
2
解决办法
4万
查看次数

SQL Server 2005复制

环境:SQL Server 2005 SP2(9.0.3077)事务性出版物(生产和测试版)

我有一种情况,我有两个不同的复制发布设置,使用一些相同的文章.这些出版物中的每一个都在不同的机器上提供订阅者.这些共享文章中的一个是表格.在一个固定的时间间隔内,该表中的许多记录都会变老并且不再需要.此时,将调用删除记录的存储过程.

为了节省资源并改善订阅者的延迟时间,我已将此存储过程的replicate属性设置为"执行存储过程"而不是默认的"仅存储过程定义".这样,当存储过程删除2,000,000多条记录时,这些记录不会复制到订阅者.而是复制存储过程的执行,并执行订阅者上相同的复制存储过程,并删除相同的2,000,000多行.

我遇到的问题是我的第二份出版物.我不需要这种类型的行为,所以我将存储过程集上的article属性设置为"仅存储过程定义",并期望复制删除其他订户的行,但事实并非如此.订户的表格不断获得记录.所以要修复它我将Article属性设置为"Execution ..."并称之为好.这可能是最佳的解决方案,因此beta与生产匹配,但它仍然感觉像一个kludge,因为出版物属性应该彼此独立工作.

问题:为什么"执行存储过程"文章属性优先并应用于其他出版物,即使它在另一个出版物中设置为"仅存储过程定义"?

database sql-server replication sql-server-2005

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