I stumbled on this
DECLARE @g geometry;
SET @g = geometry::STPolyFromText('POLYGON ((5 5, 10 5, 10 10, 5 5))', 0);
INSERT INTO [dbo].[...](Shape)
VALUES (@g.ToString());
After adding this one record, the table would accept polygon geometry from my arcpy / python script.
So, I can now, with one CREATE script (see below), create a brand new table and have it accept polygon data.
USE [....]
GO
IF OBJECT_ID('.......', 'U') IS NOT NULL
DROP TABLE .......;
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[......](
[OBJECTID] [int] IDENTITY(1,1) NOT NULL,
…
…
…
[Shape] [geometry] NULL,
PRIMARY KEY CLUSTERED
(
[OBJECTID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
DECLARE @g geometry;
SET @g = geometry::STPolyFromText('POLYGON ((5 5, 10 5, 10 10, 5 5))', 0);
INSERT INTO [dbo].[.....](Shape)
VALUES (@g.ToString());