Ошибка создания представления SQL

Я пытаюсь скопировать представление из одной базы данных в другую и получаю ошибку:

Сообщение 4121, уровень 16, состояние 1, процедура vwPAProjects_Summary_New_2, строка 2
Не удается найти ни столбец "dbo", ни пользовательскую функцию, ни агрегат "dbo.GetContractName", либо имя неоднозначно

Я копирую вид:

USE [GRAUD]
GO
/****** Object:  View [dbo].[vwPAProjects_Summary_New_2]    Script Date: 11/07/2012 11:57:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[vwPAProjects_Summary_New_2] AS 
select
 dbo.GetContractName(PAPROJNUMBER) 'CONTRACT',
PACONTNUMBER,
isnull(dbo.GetEmployeeName(PABusMgrID),dbo.GetContractPartner(PACONTNUMBER)) 'Project Manager ID',
case PASTAT
when 1 then 'Open'
else 'Closed'
end 'Status',
case PAProjectType
when 3 then 'Fixed Price'
else 'Time and Materials'
end 'Project Type',
PAProject_Fee_Amount 'Project Fee Amount',
PAFTotalCost 'Forecast Total Cost',
(PAProject_Fee_Amount - PAFTotalCost) 'Forcast Profit',
case
    when PAProject_Fee_Amount = 0 then '0.00%'
    else cast(cast(((PAProject_Fee_Amount - PAFTotalCost)/PAProject_Fee_Amount)*100 as decimal(19,2)) as varchar(21)) + '%'
end 'Forcast %',
PAPostedBillingsN 'Actual Billings',
PAPostedTotalCostN 'Actual Total Cost',
(PAPostedBillingsN - PAPostedTotalCostN) 'Current Actual Profit',
case
    when PAPostedBillingsN = 0 then '0.00%'
    else cast(cast(((PAPostedBillingsN - PAPostedTotalCostN)/PAPostedBillingsN)*100 as decimal(19,2)) as varchar(21)) + '%'
end 'Current %'

from PA01201
where PASTAT = 1

Может ли кто-нибудь посоветовать, как я могу скопировать это? Он работал в других базах данных после того, как я его скопировал, но я не вижу никаких различий, которые могли бы его остановить на этот раз?


person user1086159    schedule 07.11.2012    source источник
comment
Ну, это прямо сказано в сообщении об ошибке, не так ли? Первое, что вы хотите проверить, это существует ли dbo.GetContractName в базе данных, в которой вы пытаетесь создать представление.   -  person Christian.K    schedule 07.11.2012


Ответы (1)


Сначала скопируйте функцию dbo.GetContractName, затем вы также должны найти копии представления.

person Steve Mayne    schedule 07.11.2012
comment
Ваше здоровье. иногда самые очевидные решения находятся последними. - person user1086159; 07.11.2012