SCOPE_IDENTITY() はその状況で機能するはずです。トリガーで行われた挿入ではなく、ストアド プロシージャと TableA への挿入にスコープを設定する必要があります。
CREATE TABLE [dbo].[TableA](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[TableB](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]
CREATE TRIGGER [dbo].[TableA_AIDU]
ON [dbo].[TableA]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO TableB ( TestColumn )
SELECT 'TableA Modified'
END
CREATE PROCEDURE [dbo].[sp_InsertToTableA]
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT TableA ( TestColumn )
SELECT 'Insert from sp_InsertToTableA'
SET @ID = SCOPE_IDENTITY()
END
ストアド プロシージャは TableA から ID を返し、TableB の挿入は期待どおりにトリガーされます。SCOPE_IDENTITY() の代わりに @@IDENTITY を使用していませんか?