Yesterday, March 25th, the development team released an RC of the upcoming QFE of the Visual Studio 2008 Team System Database Edition GDR bits.
I was surprised to read the new naming “Visual Studio 2008 Database Edition GDR v2 RC1”. Anyhow what is in a name? It is about the content if you would ask me. This RC contains many important fixes for issues that users have reported since the release in November 2008.
The RC bits are made available through the Microsoft Connect Site, but you have to request access if you are not a registered user. You can do this by sending mail to the team using this link: <Send access request for RC to team>. Access to the RC is limited so you might be out of luck if too many people signed up already.
If you get access, you receive a link to a new SETUP.EXE file. This setup will upgrade your existing GDR installation, or if you do not have the GDR installed it will immediately install the latest version, so there is no need to install RTM version if the GDR bits first and then the QFE. You can uninstall the RC and re-install the RTM version, if for any reason you are running in to issues.
To validate if you have the RC installed you can check the version number which is: 9.1.40320.00
This QFE may require making an update to your project file (.DBPROJ), but the change is compatible with the RTM GDR release, so you can safely use this is a mixed environment of RTM and QFE users. The change is that a PATH gets
Below you will find a more detailed set up steps that are representative for the problems that are addressed in the RC.
Can't resolve external objects when aliased. The following steps demonstrates the problem:
1: CREATE PROCEDURE [p1]
2: AS
3: SELECT a1.c1 FROM (SELECT c1 FROM [$(d1)].dbo.t1) a1
The following fragment demonstrates the problem.
1: <PermissionStatement Action="GRANT">
2: <Permission>SEND</Permission>
3: <Grantee>usera</Grantee>
4: <Object Name="//abc.com/abc" Type="SERVICE" />
5: <Grantor>dbo</Grantor>
6: </PermissionStatement>
The following fragment demonstrates the problem:
1: <PermissionStatement Action="DENY">
2: <Permission>SELECT</Permission>
3: <Grantee>User1</Grantee>
4: <Object Name="Table1" Schema="dbo" Type="OBJECT">
5: <Columns Treatment="EXCLUDE">
6: <Column Name="A"/>
7: <Column Name="B"/>
8: </Columns>
9: </Object>
10: <Grantor>BedrockDBA</Grantor>
11: </PermissionStatement>
12:
13: <PermissionStatement Action="DENY">
14: <Permission>SELECT</Permission>
15: <Grantee>User1</Grantee>
16: <Object Name="Table1" Schema="dbo" Type="OBJECT">
17: <Columns Treatment="EXCLUDE">
18: <Column Name="C"/>
19: <Column Name="D"/>
20: </Columns>
21: </Object>
22: </PermissionStatement>
The following steps will demonstrate the problem:
1: CREATE VIEW v1
3: WITH cte AS (SELECT * FROM Table1)
4: SELECT * FROM CTE
4: <Object Name="" />
1: CREATE PROC dbo.Bug
3:
4: DECLARE @xml nvarchar(4000)
5: SET @xml = N'<root><item c1="1" c2="2" /></root>'
6:
7: DECLARE @doc int
8:
9: EXEC sp_xml_preparedocument @doc output, @xml
10:
11: SELECT
12: c1,
13: c2
14: INTO #tmpTable
15: FROM OPENXML(@doc, '//item', 1)
16: WITH
17: (
18: c1 int,
19: c2 int
20: )
21:
22: EXEC sp_xml_removedocument @doc
23:
24: SELECT * FROM #tmpTable
25:
26: DROP TABLE #tmpTable
The following steps demonstrate the problem, generating an unresolved reference error.
1: create table t1 (c1 int)
2: go
4: create table t2 (c1 int)
5: go
7: create proc p1
8: as
9: select (select * from (select t1.c1 from t2) tmp) from t1
10: go <?xml:namespace prefix = o />
1: CREATE PROCEDURE [dbo].[Procedure1]
2: @param1 int = 0, @param2 int
3: AS
4: EXTERNAL NAME [abc.def.hij].[abc.efg.hij.foo].[bar]
1: CREATE VIEW dbo.[Test2] WITH SCHEMABINDING
3: SELECT ur.col
4: FROM ( SELECT 1 as col ) ur
5: WHERE CAST(ur.col as varchar(10)) = '0'
To reproduce the problem, perform the following steps:
The following steps demonstrate the problem:
1: CREATE TABLE t1
2: (
3: c1 int not null,
4: c2 int
5: )
3: /*c1 int not null*/,
4: /*c2 int*/
1: CREATE TABLE [dbo].[Table1]
4: c2 int not null,
5: c3 int not null
6: )
7:
1: CREATE TABLE [dbo].[Employee]
3: column_1 int NOT NULL,
4: column_2 int NULL
6: GO
8: EXECUTE sp_addextendedproperty
9: @name = N'MS_Description',
10: @value = N'Date of birth.',
11: @level0type = N'SCHEMA',
12: @level0name = N'dbo',
13: @level1type = N'TABLE',
14: @level1name = N'Employee',
15: @level2type = N'COLUMN',
16: @level2name = N'column_1';<?xml:namespace prefix = o />
2: @param1 int = 0,
3: @param2 int
4: AS
5: declare @a as nvarchar(max)
6: set @a= (
7: select a from
8: (select 'asdf' as a )as b for xml auto )
1: CREATE PROCEDURE [dbo].[Procedure2]
5: DECLARE @digits nvarchar(8)
6: SET @digits = RIGHT(( '00000000' + @digits ), 8)
7: RETURN 0
The following script fragment demonstrate the problem:
3: DECLARE @sql nvarchar(max),
4: @param nvarchar(max),
5: @o1 int
7: set @param = N'@o1 int output'
9: set @sql = N'set @output = 1'
11: exec sp_executesql
12: @sql,
13: @param,
14: @o1 output
1: ALTER TABLE [dbo].[Table1]
2: ADD CONSTRAINT [DefaultConstraint1]
3: DEFAULT 0
4: FOR column_1
3: customername nvarchar(30) COLLATE Sql_Latin1_General_CP1_CS_AS,
4: suppliername nvarchar(30) COLLATE Sql_Latin1_General_CP1_CS_AS,
5: unit_price int NOT NULL,
6: unit_quantity int NOT NULL,
7: [line_price] AS ([unit_price] * [unit_quantity])
8: )
4: column_2 int NULL,
5: column_3 as [dbo].[BurgerMaster]() persisted
7: GO
9: CREATE INDEX [Index1]
10: ON [dbo].[Table1]
11: (column_3)
12: GO
13:
14: CREATE FUNCTION [dbo].[BurgerMaster]()
15: RETURNS INT
16: WITH SCHEMABINDING
17: AS
18: BEGIN
19: return 1+1
20: END
1: CREATE USER udb1 WITHOUT LOGIN
2:
3: GRANT ALTER ANY DATABASE AUDIT to udb1
2: <Permission>ALTER ANY DATABASE AUDIT</Permission>
3: <Grantee>u1</Grantee>
4: </PermissionStatement>
The summary is that this RC contains some very important fixes which you do not want to miss out on, I have been using this build for the last 5 days and am very impressed with the quality and stability of it. I have not run in to any new issues so far.
Great work!
GertD @ www.DBproj.com