1

毎晩、ある SQL Server から別の SQL Server にいくつかのテーブルをインポートしていますが、テーブルDDMMYYYYには宛先にサフィックスが必要です。インポート処理中に名前を変更する方法が思いつかず、インポート後に名前を変更することを考えました。私もSP_RENAMEこのフォーマットで仕事をすることができないので、ここで立ち往生していますSP_RENAME 'TABLE_NAME' 'TABLE_NAME+DDMMYYYY'

4

2 に答える 2

2

このスクリプトを SQL Server Management Studio ( Ctrl+T(テキスト出力)、F5(実行))T-SQLで実行して、別のスクリプトを生成します。

SET NOCOUNT ON;
GO

DECLARE @StartDate DATETIME,@EndDate DATETIME;
SELECT  @StartDate='2013-07-10T00:00:00',
        @EndDate='2013-07-23T00:00:00';

PRINT 'BEGIN TRANSACTION;'

SELECT  'EXEC sp_rename '
        +''''
        +QUOTENAME(s.name)+'.'+QUOTENAME(t.name)
        +''','''
        +QUOTENAME(t.name+STUFF(STUFF(CONVERT(VARCHAR(25),t.create_date,103),3,1,''),5,1,''))
        +''', ''OBJECT'''
FROM    sys.tables t
JOIN    sys.schemas s ON t.schema_id=s.schema_id
WHERE   t.create_date BETWEEN @StartDate AND @EndDate
--AND   t.name LIKE '%pattern%'

PRINT 'ROLLBACK;'
PRINT '-- COMMIT;'

SET NOCOUNT OFF;
GO

生成された出力/スクリプトの例 ( Message panel):

BEGIN TRANSACTION;    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EXEC sp_rename '[dbo].[NodesOrder]','[NodesOrder19072013]'
EXEC sp_rename '[dbo].[RateTable]','[RateTable19072013]'
EXEC sp_rename '[dbo].[A]','[A22072013]'
EXEC sp_rename '[dbo2].[A]','[A22072013]'
EXEC sp_rename '[dbo].[ConstraintTest]','[ConstraintTest17072013]'
ROLLBACK;
-- COMMIT;

次に、このスクリプト ( Ctrl+CCtrl+VF5) を実行します。

于 2013-07-22T19:31:47.070 に答える