2017-07-21 20 views
1

DBにシノニムが作成されています(年固有のもの、つまりDST2016)。 2017年のデータベース(DST2017)のシノニムを作成して、私たちのすべてのジョブが自動的に2017年を指し示すようにします。同じテーブル名を持つSQL Server 2016でシノニムを作成するときにエラーが発生する

私はコマンド create synonym ABS for [DST2017].[dbo].[ABS] を実行すると、私は次のエラーを取得:

There is already an object named 'ABS' in the database.

私はこれを回避することができますどのように任意のアイデアを?

+0

最初に2016の同義語を削除しますか? –

+0

@james z私はそれを試みました。うまく働いた。しかし今、新しい問題があります。シノニムを作成したDBはCURRENTDBです。 [CURRENTDB]を使用してエラーを取得することはできません**データベース 'CURRENTDB'は存在しません。名前が正しく入力されていることを確認してください。** – Kaur

+0

それを削除し、正しいデータベースに作成しますか?構文については、[the docs](https://docs.microsoft.com/en-us/sql/relational-databases/synonyms/create-synonyms)を参照してください。 –

答えて

0

私はあなたが古いもの(同義語)を作成している場所がわからないんだけど、多分あなたは古いものを削除するには、このような何かを行うことができます:

select 'drop synonym ' + name 
from sys.tables order by name 

次に新しいものを作成するには、このコマンドを使用します:

declare @db as varchar(50) = (select db_name()) 
select 'create synonym ' + name + ' for ' + @db + '.dbo.' + name 
from sys.tables order by name 

また、テーブルがある別のデータベースにある必要があります。そうでないと、上記のエラーが表示されます。

+0

私たちは今朝出会った新しい問題です。このDBを使用しているジョブで、USE CURRENTDBのようなコマンドがあります。実行してエラーを出さないでください。 CURRENTDBの前後に括弧[]が来るのはなぜですか?どうすれば修正できますか?ありがとう! – Kaur

+0

取得しているエラーは何ですか? – Chuck

+0

データベース 'CURRENTDB'は存在しません。名前が正しく入力されていることを確認してください。 – Kaur

関連する問題